- Updated
package.json
to restrict@chakra-ui/react
's peer dependency to be < 3.0.0, fixing #4390
- Updated
NumberField
to properly pass through theerrorSchema
andid
in the onChange handler, fixing #4382
- Updated the peer dependencies for
@rjsf/*
to be5.23.x
- Updated
SchemaField
to no longer make schema fields with const read-only by default, partially fixing #4344
- Updated
Experimental_DefaultFormStateBehavior
to add a newconstAsDefaults
option - Updated
getDefaultFormState()
to use the newconstAsDefaults
option to control how const is used for defaulting, fixing #4344, #4361 and #4377 - Use
experimental_customMergeAllOf
option in functions that have previously missed it. - Updated
ErrorSchemaBuilder
methodsaddErrors
andsetErrors
to prevent duplicate error messages.
- Fixed issue where error messages do not have
title
orui:title
if aLocalizer
function is used. Fixes #4387
- Updated the playground to add a selector for the
constAsDefaults
option
- Fixed issue with array schema defaults not applying properly when formData is an empty array, fixing #4335.
- Fix issue 'Maximum call stack size exceeded' with playground share with large content.
- Fixed deep nested dependencies issue with assigning values to formData, fixing #4334
- Fix an issue where only the first file was uploaded when users selected multiple files for upload.
- Fixed validation regression Form not revalidating after formData change, fixing #4343
- Fixed
AJV8Validator#transformRJSFValidationErrors
to replace the error message field with either theuiSchema
'sui:title
field if one exists or theparentSchema
title if one exists. Fixes #4348
- Bumped peer dependencies to 5.22.x due to updated type definition and API changes in @rjsf/utils
- Updated
MultiSchemaField
to call theonChange
handler after setting the new option, fixing #3997 and #4314
- Added
experimental_customMergeAllOf
option toretrieveSchema()
andgetDefaultFormState()
to allow custom merging ofallOf
schemas - Made fields with const property pre-filled and readonly, fixing #2600
- Added
mergeDefaultsIntoFormData
option toExperimental_DefaultFormStateBehavior
type to control how to handle merging of defaults - Updated
mergeDefaultsWithFormData()
to add new optionaldefaultSupercedesUndefined
that when true uses the defaults rather thanundefined
formData, fixing #4322 - Updated
getDefaultFormState()
to pass true tomergeDefaultsWithFormData
fordefaultSupercedesUndefined
whenmergeDefaultsIntoFormData
has the valueuseDefaultIfFormDataUndefined
, fixing #4322 - Updated
getClosestMatchingOption()
to improve the scoring of sub-property objects that are provided over ones that aren't, fixing #3997 and #4314
- Updated the
form-props.md
to add documentation for the newexperimental_customMergeAllOf
props and theexperimental_defaultFormStateBehavior.mergeDefaultsIntoFormData
option - Updated the
utility-functions.md
to add documentation for the new optionaldefaultSupercedesUndefined
parameter and the two missing optional fields ongetDefaultFormState()
- Updated the
custom-templates.md
to add a section header for wrappingBaseInputTemplate
- Updated the playground to add controls for the new
mergeDefaultsIntoFormData
option- In the process, moved the
Show Error List
component over one column, making it inline radio buttons rather than a select
- In the process, moved the
- Updated
SchemaField
to passrequired
flag to_AnyOfField
/_OneOfField
- Updated
Form
to deal with null objects infilterErrorsBasedOnSchema()
, fixing #4306
- Updated
ErrorSchemaBuilder
to support adding, updating, and removing paths that are numbers, fixing #4297 - Updated
retrieveSchema
to not mergecontains
properties inallOf
schema lists, fixing #2923
- Updated the
custom-widgets-fields.md
to add examples of wrapping a widget/field
- Revert of updating
deepEquals()
from [#4292]
- Revert of using
deepEquals()
instead oflodash.isEqual()
from [#4292]
- Updated
Form
to fixfocusOnError()
to support the ids that include dots, fixing #4279
- Updated the peer dependencies for
@mui/material
and@mui/icon-material
, fixing 4283
- Fixes an issue with dependencies computeDefaults to ensure we can get the dependencies defaults #4271
- Updated
deepEquals()
to usefast-equals.createCustomEqual()
instead oflodash.isEqualWith()
, fixing #4291- Switched uses of
lodash.isEqual()
todeepEquals()
in many of the utility functions as well
- Switched uses of
- Use
@rjsf/utils
deepEquals()
instead oflodash.isEqual()
to improve performance, fixing #4291
- Updated the playground to use
@mui/*
version 6, changing the name of the dropdown frommaterial-ui-5
tomui
- Updated the peer dependencies to
5.20.x
due to types and API changes in@rjsf/utils
- Support allowing raising errors from within a custom Widget #2718
- Updated
ArrayField
,BooleanField
andStringField
to calloptionsList()
with the additionalUiSchema
parameter, fixing #4215 and #4260
- Updated the
WidgetProps
type to addes?: ErrorSchema<T>, id?: string
to the params of theonChange
handler function - Updated
UIOptionsBaseType
to add the newenumNames
prop to support an alternate way to provide labels forenum
s in a schema, fixing #4215 - Updated
optionsList()
to take an optionaluiSchema
that is used to extract alternate labels forenum
s oroneOf
/anyOf
in a schema, fixing #4215 and #4260- NOTE: The generics for
optionsList()
were expanded from<S extends StrictRJSFSchema = RJSFSchema>
to<S extends StrictRJSFSchema = RJSFSchema, T = any, F extends FormContextType = any>
to support theUiSchema
.
- NOTE: The generics for
- Update the
custom-widget-fields.md
to add documentation for how to raise errors from a custom widget or field
- Fix XSS when rendering schema validation errors #4254
- NOTE: This will have potential consequences if you are using the translateString feature and are trying to render HTML. Switching to Markdown will solve your problems.
- Updated the
ValidatorType
interface to add an optionalreset?: () => void
prop that can be implemented to reset a validator back to initial constructed state- Updated the
ParserValidator
to provide areset()
function that clears the schema map
- Updated the
- Also updated the default translatable string to use
Markdown
rather than HTML tags since we now render them withMarkdown
- Updated the
AJV8Validator
to implement thereset()
function to remove cached schemas in theajv
instance
- Updated the
Validator
dropdown to addAJV8 (discriminator)
which sets the AJV validator discriminator option totrue
to support testing schemas with that option in them
- SelectWidget now displays an empty option when appropriate, fixing #4197
- SelectWidget now displays an empty option when appropriate, fixing #4197
- SelectWidget now displays an empty option when appropriate, fixing #4197
- SelectWidget now displays an empty option when appropriate, fixing #4197
- SelectWidget now displays an empty option when appropriate, fixing #4197
- SelectWidget now displays an empty option when appropriate, fixing #4197
- Removed
.only
on tests that was accidentally added in5.19.0
- Bumped the peer dependencies to
5.19.x
due to use of new API in5.19.0
- Updated
AltDateWidget
to use the newdateRangeOptions()
function inutils
to support relative Years and reversing the order of the Year choices
- Updated
AltDateWidget
to use the newdateRangeOptions()
function inutils
to support relative Years and reversing the order of the Year choices
- Fixed case where
readOnly
from a JSON Schema was not applied in SchemaField (#4236) - Updated
AltDateWidget
to use the newdateRangeOptions()
function inutils
to support relative Years and reversing the order of the Year choices
- Added a new
dateRangeOptions()
function to implement relative Years in (via negative ranges) and reversing the order of the Year choices
- Added documentation for the new
dateRangeOptions()
function as well as showing examples of using relative Years and reversed Year ordering
- Fix disabled property of options in CheckboxesWidget and RadioWidget (#4216)
- Fix IdSchema and PathSchema types (#4196)
- Fix IdSchema and PathSchema types (#4196)
- Fix IdSchema and PathSchema types (#4196)
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Fix case where NumberField would not properly reset the field when using programmatic form reset (#4202)[#4202]
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers - Fix field disable or readonly property can't cover globalOptions corresponding property (#4212)[#4212]
- Added support for
default
values inadditionalProperties
in #4199, fixing #3195
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Updated widgets to handle undefined
target
inonFocus
andonBlur
handlers
- Improved performance issues with large schema dependencies and oneOf conditions #4203.
- Improved performance issues with large schema dependencies and oneOf conditions #4203.
- Fixed typo in
constants.ts
,Form.tsx
- Added support for version 2 in the
peerDependencies
- Bumped devDependencies on
react
to18.x
- Fixed typo in
custom-widgets-fields.md
in the documentation - Updated the
LICENSE.md
to include the proper copyright dates and owner
- Fixed Programmatic submit not working properly in Firefox #3121
- #4116 Fix Maximum call stack size exceeded when encountering circular definitions (Link to PR)
- Fix issue where the theme provided by the ConfigProvider under antd v5 wasn't respected thereby rendering the form items unusable under dark themes #4129
- Fix Error state not resetting when schema changes #4079
- Fixed the
SelectWidget
andBaseInputTemplate
to filter outerrorSchema
andautocomplete
from thetextFieldProps
being spread onto theTextField
, fixing #4134
- Added a new
skipEmptyDefault
option inemptyObjectFields
, fixing #3880 - Added a new
computeSkipPopulate
option inarrayMinItems
, allowing custom logic to skip populating arrays with default values, implementing #4121. - Fixed bug where the string
"\</strong>"
would get printed next to filenames when uploading files, and restored intended bolding of filenames fixing #4120.
- Updated the documentation to describe how to use the
skipEmptyDefault
option. - Fixed missing import of
Form
in usage documentation - fixing #4127
- Added support for
UiSchema
"ui:rows"
option fortextarea
elements, fixing #4070.
- #4091 Added
errorSchema
toArrayFieldTemplate
props.
- #4080 - BREAKING CHANGE: Removed the
base64
object from the@rjsf/utils
package. Note that this is a breaking change if you relied on thebase64
object exported by@rjsf/utils
. Since this change caused #4080, and was only internally used by playground code, we are shipping this change in a patch release. - #4091 Added
errorSchema
to theArrayFieldTemplateProps
type.
- #4080 - Moved the
base64
encoder/decoder object to the Playground package. - Added test configuration and script to the Playground.
- Added support for
anyOf
/oneOf
inuiSchema
s in theMultiSchemaField
, fixing #4039 - Fix potential XSS vulnerability in the preview button of FileWidget, fixing #4057
- #4024 Added
base64
to supportencoding
anddecoding
using theUTF-8
charset to support the characters out of theLatin1
range. - Updated
enumOptionsValueForIndex()
to fix issue that filtered enum options with a value that was 0, fixing #4067 - Changes the way of parsing the data URL, to fix #4057
- #4024 Updated the base64 references from (
atob
andbtoa
) to invoke the functions from the newbase64
object in@rjsf/utils
. - Updated the
uiSchema.md
documentation to describe how to use the newanyOf
/oneOf
support
- Bumped peer dependencies due to new utils function
- Pass indexed title from array into its items, adding enhancement asked in #3983
- Removed
dateElementProps
function implementation, and replaced it withgetDateElementProps
from@rjsf/utils
. - Modify submit method to make it a public method, fixing #4015
- Support file deletion for
format: "data-url"
inFileWidget
, fixing #3957.
- Removed
dateElementProps
function implementation, and replaced it withgetDateElementProps
from@rjsf/utils
.
- Removed
dateElementProps
function implementation, and replaced it withgetDateElementProps
from@rjsf/utils
.
- Updated the
FieldErrorTemplate
andFieldHelpTemplate
to support html-based errors that cause<xxxx> cannot appear as a descendant of <p>
browser warnings, fixing #4031
- Added
getDateElementProps()
to refactor duplicate function incore
,antd
&chakra-ui
AltDateWidget's source code. The same function, implements the feature requested in #297
- Updated docs and playground with the implementation guide of newly added date re-order feature.
- fix
getFieldNames
. Now correctly defines an array of primitives.
- Updated the
AJV6Validator
class to expose the internalajv
object, allowing access to support a fix related to #3972
- Updated the
AJV8Validator
class to expose the internalajv
object, allowing access to support a fix related to #3972
- Updated the documentation to describe how to use the newly exposed
ajv
variable
- fix gap in text and select widget outlines when
"ui:label": false
is specified.
- Updated
resolveAllReferences()
to use own recurse list for each object properties, fixing #3961 - Added an experimental flag
allOf
toexperimental_defaultFormStateBehavior
for populating defaults when usingallOf
schemas #3969
- add missing typescript project reference for
utils
invalidator-ajv6
andvalidator-ajv8
packages tsconfigs - Added a dropdown for changing the
experimental_defaultFormStateBehavior.allOf
behaviour in the playground
- add
retrieveSchema
atForm
state to memoize the result ofschemUtils.retrieveSchema
- Updated README.md references
- Fixed width of
ArrayFieldItemTemplate
items
- update tsconfigs:
"importHelpers": false
to remove need for tslib dependency #3958- increase compilation target level from es6 to es2018 (so there are no need for transpiling object spread/rest feature)
- add missing typescript project reference for
snapshot-tests
in a root tsconfig, update it to also use es modules
- Fixed the
peerDependencies
for@ant-design/icons
to also support v5, fixing #3507
- avoid call
retrieveSchema
twice duringgetStateFromProps
andmustValidate
is true #3959
- Resolve the React error caused by the propagation of the
hideError
property to the DOM element, fixing #3945
- Resolve the React error caused by the propagation of the
hideError
property to the DOM element, fixing #3945
- Update
sanitizeDataForNewSchema()
to avoid spreading strings and Arrays into the returned value when the old schema is of typestring
orarray
and the new schema is of typeobject
. Fixing #3922
- Update
sanitizeDataForNewSchema()
to avoid spreading strings and Arrays into the returned value when the old schema is of typestring
orarray
and the new schema is of typeobject
. Fixing #3922 - update types for
labelValue
to have more granular return types, fixing #3946
- Added Fluent UI v9 (React Components) theme to playground
- Update Fluent UI v9 and playground project references
- Update eslint ignores to exclude new typescript build output folders
- Added theme for Fluent UI v9 (React Components), fixing #3659
Move theme snapshot tests into separate package
- update configuration to use typescript project references, start type checking the tests
- Updated
StringField
to passhideError
prop toWidget
so that all fields are consistent. Missed this file in previous patch
- Updated
StringField
andBooleanField
to passhideError
prop toWidget
so that all fields are consistent
- Updated
SchemaField
to show errors foranyOf
/oneOf
when being rendered as select control, fixing 3908
- Fixed the
SelectWidget
so that filtering works by reworking howoptions
are passed to the underlyingSelect
- Replaced the deprecated
UNSAFE_componentWillReceiveProps()
method in the Form.tsx component with an improved solution utilizing the React lifecycle methods:getSnapshotBeforeUpdate()
andcomponentDidUpdate()
. Fixing #1794 - Fixed the
ArrayField
implementation to never pass an undefined schema for fixed arrays to other methods, fixing #3924 - Fixed a refresh issue in
getSnapshotBeforeUpdate()
caused by the fix for #1794, fixing #3927
- Updated
toPathSchemaInternal()
util to generate correct path schemas for fixed arrays by picking up individual schemas in theitems
array, fixing #3909
- Updated
resolveAnyOrOneOfSchemas()
to not take arecurseList
anymore, and instead always pass an empty array down toresolveAllReferences()
, fixing #3902- Also updated
parseSchema()
andresolveDependencies()
to no longer passrecurseList
toresolveAnyOrOneOfSchemas()
- Also updated
- Updated
AJV8PrecompiledValidator
to add a newensureSameRootSchema()
function that is called in bothrawValidation()
andisValid()
- This function adds an optimization to avoid resolving the root schema unless necessary
- Updated
ArrayField
to move errors in the errorSchema when the position of array items changes for the insert and copy cases.
- Removed an unnecessary
Grid
container component in theArrayFieldTemplate
component that wrapped theArrayFieldItemTemplate
, fixing #3863 - Fixed an issue where
SelectWidget
switches from controlled to uncontrolled whenenumOptions
does not include a value, fixing #3844
- Removed an unnecessary
Grid
container component in theArrayFieldTemplate
component that wrapped theArrayFieldItemTemplate
, fixing #3863 - Fixed an issue where
SelectWidget
switches from controlled to uncontrolled whenenumOptions
does not include a value, fixing #3844
- Added
getOptionMatchingSimpleDiscriminator()
function getMatchingOption
andgetClosestMatchingOption
now bypassvalidator.isValid()
calls when simple discriminator is provided, fixing #3692- Fix data type in
FieldTemplateProps['onChange']
- Updated
retrieveSchema()
to properly resolve references inside ofproperties
and arrayitems
while also dealing with recursive$ref
s, fixing #3761- Updated
schemaParser()
andgetClosestMatchingOption()
to pass the newrecursiveRef
parameter added to internalretrieveSchema()
APIs
- Updated
- Added/updated all the necessary tests to restore the
100%
test coverage that was lost when updating to Jest 29- Updated
getDefaultFormState()
to remove an unnecessary check forformData
being an object since it is always guaranteed to be one, thereby allowing full testing coverage
- Updated
- Updated
getSchemaType()
to return the first schematype
when it is an array not containing'null'
, fixing #3875
- Updated the
validator
andprecompiledValidator
tests to the restore100%
coverage that was lost when updating to Jest 29- Updated
isValid()
for thevalidator
commenting out an if condition that was preventing100%
coverage, with a TODO to fix it later
- Updated
- Added the
@types/jest
as a globaldevDependency
so that developer tools properly recognize the jest function types
- Bump Antd version from v4 to v5.
- Intentionally kept peer dependencies to v4 so that this change doesn't make breaking change for @rfjs/antd users.
- However, if users of @rjsf/antd want to use v5 styling, they need to wrap your application with the
StyleProvider
from@ant-design/cssinjs
. They need not have to install this package, its a transitive package coming from antd.
import { StyleProvider } from '@ant-design/cssinjs';
const Component = () => {
return (
<StyleProvider>
<YourFormComponents />
</StyleProvider>
);
};
- Updated
MultiSchemaField
to only merge top level required field fixing duplicate field and description. - Fixed programmatic validation (
validateForm()
) removes previous errors if all data is now valid.
- Fixed a faulty check of the
isMultiple
option inMultiSchemaField
. It no longer offers multiple choice inside a select field in aoneOf
case in Chakra UI, fixing #3848
- Fixed custom validation playground example (#3856)
- Updated
AJV8PrecompiledValidator.rawValidation()
to resolve root schema with formData when comparing input schema, fixing #3825
- Updated
MultiSchemaField
to merge all top level fields except properties for anyOf/oneOf options, fixing #3808 and #3787
- Updated CheckboxesWidget to not show duplicate title, fixing #3815
- Updated
retrieveSchemaInternal
allOf logic for precompiled schemas to resolve top level properties fixing #3817
- Experimental feature:
- Added
experimental_defaultFormStateBehavior = { arrayMinItems: { populate: 'never' } }
(feature #3796)
- Added
- Exposing new function
compileSchemaValidatorsCode
to allow creating precompiled validator without a file. This is useful in case when precompiled validator is to be created dynamically. #3793
- update playground vite config to use sources directly, allowing to reload changes in it without additional build step
- moving from
dts-cli
to use individual dev tools directly, updating package publish config- tsc for generating type definitions and esm modules
- esbuild for CJS bundle
- rollup for UMD bundle
- Updated the
form-props
documentationarrayMinItems
, added description fornever
. - Updated the
playground
to add the option for the newarrayMinItems.populate = 'never'
.
- Removed unnecessary import of old
@types/material-ui
which can cause typescript issues in some situations
- Updated the
resolveAllReferences()
function to use object spreading to update properties and items in a schema rather than directly modifying the schema to avoid issues with frozen object, fixing #3805
- Updated
SchemaField
to ignore errors foranyOf
/oneOf
parent schema, fixing 1295
- Created new
resolveAllReferences()
function to resolve all references within a schema's properties and array items. - Updated
getClosestMatchingOption()
to useresolveAllReferences()
for all oneOf/anyOf schemas - Updated
resolveAnyOrOneOfSchemas()
to useresolveAllReferences()
for all oneOf/anyOf schemas - Better handle the
null
case inwithIdRefPrefix
, fixing #3792
- Updated
MultiSchemaField
to usemergeSchema()
for merging in the remaining schema foranyOf
/oneOf
- Added new
extraErrorsBlockSubmit
prop toForm
that allows the extra asynchronous errors to block a form submit, fixing #3757
- Updated
retrieveSchemaInternal()
to always resolve allOf schema without merging whenexpandAllBranches
is set, fixing compiled schema issue always throwing error withmergeAllOf
- Updated
getDefaultFormState()
to usemergeSchema()
for merging in the remaining schema foranyOf
/oneOf
- Updated
retrieveSchema()
to usemergeSchema()
for merging in the remaining schema foranyOf
/oneOf
- Switched to using npm workspaces for the sub-package hierarchy
- NOTE: Developers may need to run the
npm run refresh-node-modules
script first to get the build and tests to work correctly
- NOTE: Developers may need to run the
- Backfilled Docusaurus site with documentation for v3, v4
- Updated
getFieldComponent()
to support rendering a custom component by given schema id ($id). #3740 - Updated
MultiSchemaField
to merge the selectedoneOf/anyOf
value into baseschema
, fixing #3744
- Updated
getClosestMatchingOption()
to resolve refs in options before computing the closest matching option, fixing an issue with using precompiled validators- Also, added support for nested
anyOf
anddiscriminator
support in the recursivecalculateIndexScore()
- Also, added support for nested
- Updated
getDefaultFormState()
to merge the remaining schema intoanyOf/oneOf
schema selected during the computation of values, fixing #3744 - Updated
retrieveSchema()
to merge the remaining schema into theanyOf/oneOf
schema selected during the resolving of dependencies, fixing #3744
- Updated the
custom-widgets-fields
documentation to add the new added behaviour ofgetFieldComponent()
function. #3740 - Updated the
playground
to add an example of the new added behaviour ofgetFieldComponent()
function. #3740
- Updated
getDefaultFormState()
to fix a bug whereexperimental_defaultFormStateBehavior: { emptyObjectFields: 'populateRequiredDefaults' }
wasn't working for object properties with$ref
s - Experimental feature breaking change:
- Updated the
experimental_defaultFormStateBehavior.arrayMinItems
from simple flag to an object containing two optional fields,populate
andmergeExtraDefaults
- The new
arrayMinItems.mergeExtraDefaults
flag, when "true", allows users to merge defaults onto the end offormData
arrays whenminItems
is specified
- The new
- If you were previously passing
experimental_defaultFormStateBehavior
as{ arrayMinItems = 'requiredOnly }
on theForm
, now you would pass{ arrayMinItems: { populate: 'requiredOnly' } }
- Updated the
- Added a new, optional
mergeExtraArrayDefaults=false
flag to themergeDefaultWithFormData()
utility function to support the newarrayMinItems.mergeExtraDefaults
experimental feature
- Updated the
utility-functions
documentation to add the newmergeExtraArrayDefaults
flag for themergeDefaultWithFormData()
function - Updated the
form-props
documentation to update thearrayMinItems
documentation for the new object behavior - Updated the
playground
to add a checkbox for the newarrayMinItems.mergeExtraDefaults
flag
- Explicitly cache schemas by their hash when checking data is valid to avoid multiple compilations for schemas without IDs leading to poor performance #3721
- Updated peer dependencies in all packages to
^5.8.x
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated SchemaField to be able to render markdown in the description field
- Updated
MultiSchemaField.getMatchingOption
to use option index fromgetClosestMatchingOption
, fixing #3693 and #3705
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated FieldTemplate Component to display description from SchemaField and make it consistent for all the available themes
- Updated
getClosestMatchingOption
to return selected option if all options score the same, fixing #3693 and #3705 - Updated
resolveCondition
to default formData as empty object when evaluating if expression, fixing #3706 - Updated
retrieveSchemaInternal
to return failed merged allOf sub schemas for expandAllBranches flag, fixing #3689 - Updated
hashForSchema
to sort schema fields in consistent order before stringify to prevent different hash ids for the same schema - Updated
enumOptionsSelectValue
to allow picking falsy enumOptions, fixing #3716
- Updated
AJV8PrecompiledValidator.rawValidation()
to use resolve root schema when comparing input schema, fixing #3708
- Updated sample data and documentation about the markdown in
RJSFSchema
description - Fixed broken playground examples (#3696)
- Added experimental_defaultFormStateBehavior.emptyObjectFields control to Playground
- Fixed bug where subthemes would not appear in Playground
- Updated
getClosestMatchingOption
JUNK_OPTION
schema with a well known $id - Updated
schemaParser
to resolve array items field, fixing #3689
- Updated
AJV8PrecompiledValidator.isValid()
to return false for junk schema option, fixing #3677
- Removed the importing of internal
ajv
types by simplifying theCompiledValidateFunction
type to avoid a bunch of Typescript errors encountered by users of the package
- Updated the build for all but the
cjs
development version, to not export thecompileSchemaValidators()
function to avoid "Module not found: Can't resolve 'fs' error" issues, fixing #3668
- Added protection against a null
field
in thefocusOnError
method inForm
- Updated the
validation
documentation to add a note with a web-resource to help folks work around the "Module not found: Can't resolve 'fs' error" issue for development environments - Updated all of the
package-lock.json
files to bump peer-dependencies to5.7.x
, fixing #3669
- Fix #3608 by ensuring the root field is always wrapped in Form.Item
- Fix #3594 by removing the duplicate title for
SelectWidget
and description forCheckboxWidget
- Updated the
MultiSchemaField
to use the newgetDiscriminatorFieldFromSchema()
API - Added new
experimental_defaultFormStateBehavior
prop toForm
- Fixed regression #3650 in
FileWidget
to again support adding multiple files to arrays
- Added support for
additionalProperties
to fluent-ui theme, fixing #2777. - Upgraded to
8.x
version of@fluentui/react
maintaining backwards compatibility to version 7, fixing #3463
- Added two new APIs
getDiscriminatorFieldFromSchema()
(a refactor of code fromMultiSchemaField
) andhashForSchema()
- Updated
getDefaultFormState()
andtoPathSchema()
to usegetDiscriminatorFieldFromSchema()
to provide a discriminator field togetClosestMatchingOption()
calls.
- Updated
- Refactored the
retrieveSchema()
internal API functions to support implementing an internalschemaParser()
API for use in precompiling schemas, in support of #3543 - Fixed
toPathSchema()
to handleproperties
in an object along withanyOf
/oneOf
, fixing #3628 and #1628 - Refactored optional parameters for
computeDefaults()
into destructured props object to reduce clutter when only specifying later of the optional argument, fixing #3602 - Fixed
computeDefaults()
to handle$ref
in an object along withanyOf
/oneOf
, fixing #3633
- Added two new APIs
compileSchemaValidators()
andcreatePrecompiledValidator()
implemented to support using precompiled validators build with AJV 8, fixing #3543
- Added documentation to
custom-templates
describing how to extend theBaseInputTemplate
- Added minItems behavior for array field live setting, fixing #3602
- Upgraded playground to
8.x
version of@fluentui/react
, fixing #3463 - Added documentation to
validation
describing the new precompiled validators feature - Added new
validator-ajv8.md
documentation to theapi-reference
directory as well as putting it into thesidebar.js
- Fixed issues with
post-versioning
that caused the 5.6.1 branch to not be publishable
- Updated the
contributing
documentation to improve theReleasing
section to include a newnpm run post-versioning
step- Implemented a new
bump-peer-deps.js
script to help implement the new scripts included in thepost-versioning
step
- Implemented a new
- Treat multiple as a boolean rather than comparing against
undefined
in theSelectWidget
, fixing #3595
- Switched
Form
to use the newvalidatorDataMerge()
andtoErrorList()
functions instead of the now deprecatedschemaUtils.mergeValidatorData()
andschemaUtils.getValidator().toErrorList()
- Added option to provide a callback function to
focusOnFirstError
(3590) - Updated
MultiSchemaField
to handle the OpenAPIdiscriminator
extension onanyOf/oneOf
fields by passing it intogetClosestMatchingOption()
if it exists, fixing #3512 - Updated
SchemaField
function to usegetSchemaType
rather thanschema.type
to set the proper class name.
- Refactored the
createErrorHandler()
,toErrorList()
,toErrorSchema()
andunwrapErrorHandler()
functions from the@rjsf/validator-ajv6
and@rjsf/validator-ajv8
implementations since they were identical- As a result, the
mergeValidationData()
function was deprecated in favor of the newvalidationDataMerge()
function that uses the refactoredtoErrorList()
function - Refactored the
ROOT_SCHEMA_PREFIX
constant as well
- As a result, the
- Updated
ValidatorType
andSchemaUtilsType
to deprecate thetoErrorList()
andmergeValidationData()
functions, respectively - Updated the
getClosestMatchingOption()
andgetFirstMatchingOption()
to pass the newdiscriminatorField
to thegetMatchingOption()
function - Updated
getMatchingOption()
to usediscriminatorField
when it is present in theoptions
object properties to drill into the object to detect if that one field is valid - Updated
SchemaUtilsType
and the associated forward functions increateSchemaUtils
to add the newdiscriminatorField?: string
optional parameter - Updated
toIdSchema()
function to usegetSchemaType(schema) === 'object'
rather thanschema.type === 'object'
to get the proper pathing for ids, fixing #2044
- Removed the refactored functions and constant from the
AJV6Validator
in favor of using the new functions and constant from@rjsf/utils
- Removed the refactored functions and constant from the
AJV8Validator
in favor of using the new functions and constant from@rjsf/utils
- Updated the
utility-functions
documentation to describe the new refactored functions as well as deprecating themergeValidationData()
function - Updated the
playground
to properly restoreliveSettings
from shared links and added a switch fornoHtml5Validation
in the live settings rather than having it set totrue
always- Also added a new
Blank
example to help users easily paste their code
- Also added a new
- Switched to using
TextField
for theWrapIfAdditionalTemplate
label key input to match the@rjsf/mui
fix
- Switched to using
TextField
for theWrapIfAdditionalTemplate
label key input, fixing #3578
- Updated the
templates
passed into the mainForm
to not include undefined values, fixing #3576 and #3579
- Updated
Form
to include the topdisabled
property in theui:submitButtonOptions
so the submit button will be disabled when the whole form is disabled. Fixes #3264.
- Added protections against infinite recursion of
$ref
s for thetoIdSchema()
,toPathSchema()
andgetDefaultFormState()
functions, fixing #3560 - Updated
getDefaultFormState()
to handle object-basedadditionalProperties
with defaults usingformData
in addition to values contained in adefault
object, fixing #2593 - Updated internal helper
withExactlyOneSubschema()
inside ofretrieveSchema()
to use theisValid()
function rather thanvalidateFormData()
when determining the one-of branch
- Refactored some parts of
playground
to make it cleaner- This includes fixing the spelling of the
disabled
flag being passed into theForm
from the incorrectdisable
spelling
- This includes fixing the spelling of the
- Formatted the entire monorepo which included 6 unformatted files outside of
playground
- Removed
react-app-polyfill
package fromplaygound
. This ends IE11 support - Fix a handful of broken docs links, fixing #3553
- Updated tests to use centralized snapshots from
core
- Updated tests to use centralized snapshots from
core
- Updated tests to use centralized snapshots from
core
- Updated
FileWidget
to pass false forrequired
once a value has been specified, fixing #3504 - Updated
ObjectField
to pass theerrorSchema
to theObjectFieldTemplate
to allow custom templates access to the errors - Centralized snapshot tests from each theme into
core
, adding snapshots tests forcore
as well
- Updated tests to use centralized snapshots from
core
- Updated tests to use centralized snapshots from
core
- Updated tests to use centralized snapshots from
core
- Updated tests to use centralized snapshots from
core
- Added
errorSchema
as an optional prop onObjectFieldTemplateProps
- Converted the
playground
to use Typescript, including some refactoring of code to make that job easier - Updated the
custom-templates
documentation to adderrorSchema
to the props forObjectFieldTemplate
- Added the ability to use a tooltip for a description
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791 - Updated
CheckboxesWidget
andSelectWidget
to show thelabel
using theTitleFieldTemplate
, fixing #2134
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791 - Updated
RangeWidget
to fix the label hiding bug usinglabelValue()
- Fix: MUI radio widget initializes as uncontrolled when schema has no default value, fixing #3511
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
CheckboxesWidget
,CheckboxWidget
,RadioWidget
andSelectWidget
to hide labels whenhideLabel
is true using the newlabelValue()
helper (including globally) - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791
- Updated
FileWidget
to show a preview of images and a download link for non-images when thefilePreview
options is set to true in theUiSchema
- Updated
ArrayField
,BooleanField
,MultiSelectField
andStringField
to passlabel
(read fromuiSchema.title
||schema.title
||name
) andhideLabel
down to all of theWidgets
they render, fixing #827, #2636, #2399 and #3531 - Updated
ObjectField
,ObjectFieldTemplate
,ArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
andCheckboxWidget
to hide the titles and descriptions whenhideLabel
is true using the newlabelValue()
helper (including globally), fixing #3231 - Updated
CheckboxWidget
to use thelabelValue()
function for hiding labels
- Updated
FieldTemplate
andObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
BaseInputTemplate
,CheckboxesWidget
,CheckboxWidget
,ColorWidget
,DateWidget
,RadioWidget
,RangeWidget
,SelectWidget
andUpDownWidget
to hide labels whenhideLabel
is true using the newlabelValue()
helper (including globally)- Also extracted a new
FluentLabel
component out ofCheckboxesWidget
,ColorWidget
,RangeWidget
andUpDownWidget
- Also extracted a new
- Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791
- Fix: MUI radio widget initializes as uncontrolled when schema has no default value, fixing #3511
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
BaseInputTemplate
,CheckboxesWidget
,CheckboxWidget
,RadioWidget
,RangeWidget
andSelectWidget
to hide labels whenhideLabel
is true using the newlabelValue()
helper (including globally) - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791
- Fix: MUI radio widget initializes as uncontrolled when schema has no default value, fixing #3511
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
BaseInputTemplate
,CheckboxesWidget
,CheckboxWidget
,RadioWidget
,RangeWidget
andSelectWidget
to hide labels whenhideLabel
is true using the newlabelValue()
helper (including globally) - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791
- Updated
ObjectFieldTemplate
to hide the titles and descriptions whendisplayLabel
is true (including globally), fixing #3231 - Updated
BaseInputTemplate
,CheckboxesWidget
,CheckboxWidget
,SelectWidget
andTextareaWidget
to hide labels whenhideLabel
is true using the newlabelValue()
helper (including globally) - Updated
CheckboxWidget
to show thedescription
using theDescriptionFieldTemplate
, fixing #2791
- Updated the
UiSchema
to support the optionalfilePreview?: boolean
option and to add a newTranslatableString.PreviewLabel
to theenums
- Updated the
WidgetProps
to add an optionalhideLabel?: boolean
field to better support hiding labels - Added a new
labelValue()
helper function to better support hiding labels
- Improve
toErrorList()
andunwrapErrorHandler()
by ensuring objects before recursing
- Added a new
AntD Customization
documentation with references to it in theform-props
anduiSchema
documentation - Updated the
uiSchema
documentation to add thefilePreview
option - Updated the
widgets
documentation to add the new, optionalhideLabel
prop - Updated the
utility-functions
documentation to add the newlabelValue()
function
- Updated
AltDateWidget
to remove an infinite loop caused by two conflicting effects by merging them with additional checking of originalvalue
against the current value, fixing #3516
- Updated the documentation of
getTestValidator()
and theschema.test.ts
file to help developers
- Updated the documentation of
getTestValidator()
and theschema.test.ts
file to help developers
- Updated the documentation of
getTestValidator()
and theschema.test.ts
file to help developers
- Updated the
internals
documentation to use a React ref in the example, fixing #3520 - Updated the
contributing
documentation to describe the new development process needed for aVite
playground, fixing #3478- Also fixed the
package.json
files to removenpm start
in the subdirectories and change the root one to describe the new process
- Also fixed the
- Updated the
semantic-ui/uiSchema
documentation to switch the default forhorizontalButtons
to be true per changes made in5.3.0
- Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Fixed
package.json
to properly add required dependencies explicitly which were installed implicitly
- Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
Reset
function added forProgrammatically Reset
action.Reset
function will reset form data and validation errors. Form data will set to default values.- Implemented a new
TimeWidget
that works for all themes - Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Also added the missing translation for the
InvalidObjectField
error inObjectField
- Added support for the handling of the global UiSchema options in
Form
,ArrayField
,ObjectField
andSchemaField
- Fix
RadioWidget
's onChange return value. - Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Updated
BaseInputTemplate
so that it shrinks atime
formatted input - Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Updated
BaseInputTemplate
so that it shrinks atime
formatted input - Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Added support to make a copy of an array item directly after the item selected to be copied (feature is off by default), fixing #1261 and #1712
- Updated the widget matrix used by
getWidget()
to support thetime
toTimeWidget
mapping - Added a new
TranslatableString
enumsCopyButton
andInvalidObjectField
that localizes the information extracted fromObjectField
as markdown - Updated the
ArrayFieldTemplateItemType
to add support for copying array items - Refactored
UIOptionsBaseType
to extract theaddable
,orderable
,removable
,label
andduplicateKeySuffixSeparator
into a newGlobalUISchemaOptions
type that addscopyable
- Extended
UIOptionsBaseType
fromGlobalUISchemaOptions
- In
UiSchema
added a new optionalui:globalOptions
prop of typeGlobalUISchemaOptions
and a newUI_GLOBAL_OPTIONS_KEY
constant - Added a new optional prop
globalUiOptions
object of typeGlobalUISchemaOptions
inRegistry
as well asCopyButton
inButtonTemplates
- Extended
- Updated
getUiOptions()
andgetDisplayLabel()
(and itsSchemaUtilsType
counterpart) to take an optionalGlobalUISchemaOptions
parameter that is used to include global options into the returneduiOptions
- Updated the playground to add a
Programmatically Reset
button to clear states which are form data and validation errors. - Updated the
Date & time
example to show off the newTimeWidget
. - Updated the
custom-widgets-fields
andwidgets
documentation to mention the newTimeWidget
and its support for thetime
format. - Updated the documentation for
custom-templates
,internals
,uiSchema
,utility-functions
andarrays
for the new copy array feature as well as the global UI Schema options support - Updated the
arrays
example to add examples for the newcopyable
feature
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
, deleting the theme'sFileWidget
, fixing #2095 - Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Ensure that
name
is consistently passed to allWidgets
through the field components, fixing #1763 - Updated the
FileWidget
to render the input using theBaseInputTemplate
passing a specialonChangeOverride
function to deal with the file events, fixing #2095 - Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
and to support automatically shrinking the label for thedate
,datetime-local
andfile
types- Removed the
DateWidget
andDateTimeWidget
since they were only created to provide the label shrinking property
- Removed the
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
and to support automatically shrinking the label for thedate
,datetime-local
andfile
types- Removed the
DateWidget
andDateTimeWidget
since they were only created to provide the label shrinking property
- Removed the
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated
BaseInputTemplate
to favor the specialonChangeOverride
provided by thecore
FileWidget
- Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Added the
name
prop to theWidgetProps
type, fixing #1763 - Fixed
dataURItoBlob()
to handle the exception thrown byatob()
when it is passed a malformed URL, returning anblob
that indicates the error in thetype
prop - Fixed
replaceStringParameters()
to improve the replaceable parameters logic so that it works properly when a parameter also contains a replaceable parameter identifier - Removed explicit import of
React
, switching imports to explicit ones after fixing linting rules to not requireReact
for JSX
- Updated the
custom-widgets-fields
documentation to ensure the newWidgetProps
name
prop is documented - Added Algolia DocSearch to the documentation site
- Updated
ErrorList
,IconButton
s,WrapIfAdditionalTemplate
andAltDateWidget
to use the newtranslateString()
function to support localization
- Updated
AddButton
,ErrorList
,IconButton
s andWrapIfAdditionalTemplate
to use the newtranslateString()
function to support localization
- Updated
AddButton
,ErrorList
,IconButton
s,WrapIfAdditionalTemplate
andAltDateWidget
to use the newtranslateString()
function to support localization
- Updated
ArrayField
,BooleanField
,MultiSchemaField
,ObjectField
,SchemaField
,AddButton
,IconButton
s,ErrorList
,WrapIfAdditionalTemplate
andAltDateWidget
andFileWidget
to use the newtranslateString()
function to support localization- Also updated
Form
to take a new optionaltranslateString
prop andgetDefaultRegistry()
to settranslateString
toenglishStringTranslator()
- Also updated
- Updated
AddButton
,ColorWidget
,ErrorList
,IconButton
s andUpDownWidget
to use the newtranslateString()
function to support localization
- Updated
AddButton
,ErrorList
,IconButton
s andWrapIfAdditionalTemplate
to use the newtranslateString()
function to support localization - Patch
RangeWidget
to support0
as range slider value, fixing #3458
- Updated
AddButton
,ErrorList
,IconButton
s andWrapIfAdditionalTemplate
to use the newtranslateString()
function to support localization - Patch
RangeWidget
to support0
as range slider value, fixing #3458
- Updated
AddButton
,ErrorList
,IconButton
s andWrapIfAdditionalTemplate
to use the newtranslateString()
function to support localization
- Updated the
utility-functions
documentation for theenums
andenglishStringTranslator()
&replaceStringParameters()
functions - Updated the
form-props
documentation for the new, optionaltranslateString
prop onForm
- Updated the playground's
numbers
example to use a range slider with a valid negative and0
value
- Updated the
AltDateTimeWidget
in@rjsf/core
to addclassName="list-inline-item"
to theLI
tags
- Fixed the
SelectWidget
to allow the proper display of the selected value, fixing #3422
- Fixed
Form
to remove passingexcludeObjectChildren
togetDefaultFormState()
, fixing #3424 and #675 - Added new feature prop
focusOnFirstError
, that if true, will cause the first field with an error to be focused on when a submit has errors
- Updated
computeDefaults()
to fix additionalProperties defaults not being propagated, fixing #2593- Also made sure to properly deal with empty
anyOf
/oneOf
lists by simply returning undefined - Add support for adding an empty object when that object is marked as required in a schema
- Also made sure to properly deal with empty
- Updated the playground to add a control for
focusOnFirstError
and theform-props
documentation for it as well
- Added the
idPrefix
,idSeparator
andrawErrors
optional props toFieldProps
since they were missing
- Migrated latest documentation to Docusaurus, which is deployed to GitHub Pages.
- Updated readthedocs.io documentation site to guide users to the new docs site.
- Updated links in documentation and package README files to point to new site.
- Updated the
custom-widgets-field
documentation for the newFieldProps
- Updated the
peerDependencies
in all packages to remove the-beta.x
tags from the@rjsf/xxxx
packages
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Updated
CheckboxesWidget
,RadioWidget
andSelectWidget
to use indexes as values to supportenumOptions
with object values, fixing #1494
- Added
enumOptionsIndexForValue()
,enumOptionsIsSelected()
,enumOptionsValueForIndex()
functions to support fixing #1494- Updated
enumOptionsDeselectValue()
,enumOptionsSelectValue()
andoptionId()
to use indexes instead of values - Deleted the
processSelectValue()
that was added in the beta and is no longer needed
- Updated
- Updated
getSchemaType()
to remove the inference of type fromanyOf
/oneOf
, fixing #3412
- Updated the
utility-functions
documentation for the new and updated methods mentioned above, as well as deleting the documentation forprocessSelectValue()
- Updated the playground to add a new
Enum Objects
example to highlight the use of indexes forenumOptions
- Updated
5.x migration guide
to document the change from values to indexes for theenumOptions
based controls.
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Updated
MultiSchemaField
to passundefined
as the value to the widget when theselectedOption
is -1, supportingSelectWidget
implementations that allow the user to clear the selected value of theanyOf
/oneOf
field. - Updated
Form
to support receiving an optionalref
prop. - Updated
Form
to restore providing empty root level objects, fixing #3391 - Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Fixed
schema.examples
to deduplicate whenschema.default
exists in the examples, fixing #3393
- Updated
MultiSchemaField
to cache options with refs in state and to output better labels for options without them when a title is available in either theschema
oruiSchema
- Improved fix for #2691 to remove the breaking change caused by the original fix #2980 as follows:
- Added a new
ui:fieldReplacesAnyOrOneOf
flag to theuiSchema
that when true will allow users to opt-out of theanyOf
/oneOf
wrapping of a custom field
- Added a new
- Updated
toPathSchema()
to handleoneOf
/anyOf
by picking the closest option and generating the path for it, fixing #2262 - Added new
uiSchema
only flagui:fieldReplacesAnyOrOneOf
that, if true allows the user to opt-out of theanyOf
/oneOf
wrapping of a custom field
- Updated the
uiSchema
documentation forui:fieldReplacesAnyOrOneOf
- Updated
MultiSchemaField
to utilize the newgetClosestMatchingOption()
andsanitizeDataForNewSchema()
functions, fixing the following issues: - Updated
ObjectField
to deal withadditionalProperties
withoneOf
/anyOf
, fixing #2538 - Updated
Form
,MultiSchemaField
,ObjectField
andSchemaField
to properly support makingformData
optional, fixing #3305
- Fix shrinking of
SelectWidget
label only if value is not empty, fixing #3369
- Fix shrinking of
SelectWidget
label only if value is not empty, fixing #3369
- Added new
getClosestMatchingOption()
,getFirstMatchingOption()
andsanitizeDataForNewSchema()
schema-based utility functions- Deprecated
getMatchingOption()
and updated all calls to it in other utility functions to usegetFirstMatchingOption()
- Deprecated
- Updated
stubExistingAdditionalProperties()
to deal withadditionalProperties
withoneOf
/anyOf
, fixing #2538 - Updated
getSchemaType()
to grab the type of the first element of aoneOf
/anyOf
, fixing #1654 - Updated all props or function parameters of the generic type
T
to allow for them to be optionally provided, fixing #3305- This was done in both the types file and the actual implementation code
- Updated places where
formData
was required as a function argument to make it optional, fixing #3305
- Updated places where
formData
was required as a function argument to make it optional, fixing #3305
- Updated the playground to
onFormDataEdited()
to only change the formData in the state if theJSON.stringify()
of the old and new values are different, partially fixing #3236 - Updated the playground
npm start
command to always use the--force
option to avoid issues where changes made to other packages weren't getting picked up due tovite
caching - Updated the documentation for
utility-functions
and the5.x upgrade guide
to add the new utility functions and to document the deprecation ofgetMatchingOption()
- Also updated
utility-functions
, making all optional parameters without a default (as denoted by the syntax[<parameter>]: <type>
) to add| undefined
onto the type to make it clear it supports passing in undefined as a value.
- Also updated
- Enable searching in the
SelectWidget
by the label that the user sees rather than by the value - Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Updated
SchemaField
to handle the newstyle
prop in theuiSchema
similarly toclassNames
, passing it to theFieldTemplate
and removing it from being passed down to children.- Also, added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper - This partially fixes #1200
- Also, added support for new
- Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Added support for new
style
prop onFieldTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Updated
SelectWidget
to support additionalTextFieldProps
in a manner similar to howBaseInputTemplate
does - Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Updated
SelectWidget
to support additionalTextFieldProps
in a manner similar to howBaseInputTemplate
does - Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Added support for new
style
prop onFieldTemplate
andWrapIfAdditionalTemplate
rendering them on the outermost wrapper, partially fixing #1200 - Updated
CheckboxesWidget
to treat the value as an array when selecting/deselecting values and when determining the checked state - fixing #2141 - Updated all the user "input" controls to have an
aria-describedby
value built using theariaDescribedByIds()
function, partially fixing #959- Also updated the generation of ids for the title, description, error, examples, options and help blocks using the associated new id generation utilty functions
- Updated the
FieldTemplateProps
,WrapIfAdditionalTemplateProps
andUIOptionsBaseType
types to addstyle?: StyleHTMLAttributes<any>
, partially fixing #1200 - Added
enumOptionsDeselectValue()
andenumOptionsSelectValue()
as a loose refactor of the duplicated functions in the variousCheckboxesWidget
implementations - Updated the
FieldTemplateProps
,WrapIfAdditionalTemplateProps
andUIOptionsBaseType
types to addstyle?: StyleHTMLAttributes<any>
, partially fixing #1200 - Added new
ariaDescribedByIds()
,descriptionId()
,errorId()
,examplesId()
,helpId()
optionId()
andtitleId()
id generator functions
- Remove alias for ajv -> ajv8 in package.json. This fixes #3215.
- Updated
AJV8Validator#transformRJSFValidationErrors
to return more human-readable error messages. The ajv8ErrorObject
message is enhanced by replacing the error message field with either theuiSchema
'sui:title
field if one exists or theparentSchema
title if one exists. Fixes #3246
- In the playground, change Vite
preserveSymlinks
totrue
, which provides an alternative fix for #3228 since the prior fix caused #3215. - Updated the
custom-templates.md
anduiSchema.md
to document the newstyle
prop - Updated the
validation.md
documentation to describe the newuiSchema
parameter passed to thecustomValidate()
andtransformError()
functions - Updated the
utility-functions
documentation to add the newenumOptionsDeselectValue()
andenumOptionsSelectValue()
functions and to describe the new id generator functions - Updated the
5.x migration guide
documentation to describe potential breakingid
changes
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072 - Updated the use of the deprecated
withConfigConsumer
with theConfigConsumer
component instead, fixing #3336
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated
CheckboxWidget
to get therequired
state of the checkbox from theschemaRequiresTrueValue()
utility function rather than therequired
prop, fixing #3317 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated
CheckboxWidget
to get therequired
state of the checkbox from theschemaRequiresTrueValue()
utility function rather than therequired
prop, fixing #3317 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314- Also, passed
registry
into theSubmitButton
inside of theForm
as part of this fix
- Also, passed
- Updated
ArrayField
to pass the newtotalItems
andcanAdd
props to theArrayFieldItemTemplate
instances, fixing #3315- Also refactored the near duplicate logic for
onAddClick
andonAddIndexClick
into a new_handleAddClick()
function, fixing #3316
- Also refactored the near duplicate logic for
- Fix passing of generic types to a few helper methods, partially fixing #3072
- Updated the types for
ValidatorType
,CustomValidator
andErrorTransformer
to add the new generics, as well as passinguiSchema
to thevalidateFormData()
call, partially fixing #3170
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the usage of the
ButtonTemplates
to pass the new requiredregistry
prop, filtering it out in the actual implementations before spreading props, fixing - #3314 - Updated
CheckboxWidget
to get therequired
state of the checkbox from theschemaRequiresTrueValue()
utility function rather than therequired
prop, fixing #3317- Also fixed the
CheckboxWidget
missing label issue #3302
- Also fixed the
- Updated the test for the
CheckboxWidget
validating that theschema.title
is passed as the label, fixing #3302 - Updated the theme to accept generic types, exporting
generateXXX
functions forForm
,Theme
,Templates
andWidgets
to support using the theme with user-specified type generics, partially fixing #3072
- Updated the
SubmitButtonProps
andIconButtonProps
to add requiredregistry
prop, fixing - #3314 - Updated the
ArrayFieldTemplateItemType
to add the newtotalItems
andcanAdd
props, fixing #3315 - Updated the
CustomValidator
andErrorTransformer
types to take the full set ofT
,S
,F
generics in order to accept a new optionaluiSchema
property, partially fixing #3170 - Updated the
ValidatorType
to add theF
generic to allow thevalidateFormData()
function to take a new optionaluiSchema
parameter, partially fixing #3170- Updated many of the schema-based utility functions to take the additional generics as well to fulfill the
ValidatorType
interface change
- Updated many of the schema-based utility functions to take the additional generics as well to fulfill the
- Updated the
customizeValidator
andAJV6Validator
implementations to add theS
andF
generics, so thatvalidateFormData()
can accept a new optionaluiSchema
parameter that is passed totransformErrors()
andcustomValidate()
, partially fixing #3170
- Updated the
customizeValidator
andAJV8Validator
implementations to add theF
generic, so thatvalidateFormData()
can accept a new optionaluiSchema
parameter that is passed totransformErrors()
andcustomValidate()
, partially fixing #3170
- Fixed the documentation for
ArrayFieldItemTemplate
,SubmitButtonProps
andIconButtonProps
as part of the fix for #3314 and #3315 - Updated the documentation in
form-props.md
forchildren
, fixing #3322 - Added new
typescript.md
documentation toAdvanced Customization
describing how to use custom generics as part of the fix for #3072 - Updated the documentation in
utilty-functions.md
to add the newF
generic to all the places which needed them
- Pass the
schema
along to theArrayFieldItemTemplate
as part of the fix for #3253 - Tweak Babel configuration to emit ES5-compatible output files, fixing #3240
- Reverse the condition used in the
onChange
handler in theRangeWidget
, fixing #2161
- Reverse the condition used in the
onChange
handler in theRangeWidget
, fixing #2161
- Update the
ArrayFieldItemTemplate
to addschema
as part of the fix for #3253 - Fix improper merging of nested
allOf
s (#3025, #3227), fixing #2923 - Added a new
ErrorSchemaBuilder
class to enable building a properErrorSchema
without crazy castings, fixing #3239
- Updated the validator to use the
ErrorSchemaBuilder
in thetoErrorSchema()
function to simplify the implementation
- Updated the validator to use the
ErrorSchemaBuilder
in thetoErrorSchema()
function to simplify the implementation - Updated the validator to properly map missing required field errors in the
ErrorSchema
, fixing #3260
- Fixed the documentation for
ArrayFieldItemTemplate
as part of the fix for #3253 - Added documentation for
ErrorSchemaBuilder
in theutility-functions.md
, fixing #3239
- No longer render extra 0 for array without errors, fixing #3233
- Added
ref
definition toThemeProps
fixing #2135 - Updated the
onChange
handler inForm
to use the newpreventDuplicates
mode ofmergeObjects()
when mergingextraErrors
when live validation is off, fixing #3169
- Fix RangeWidget missing htmlFor and schema.title #3281
- Fix RangeWidget missing htmlFor and schema.title #3281
- Updated
computedDefaults
(used bygetDefaultFormState
) to skip saving the computed default if it's an empty object unlessincludeUndefinedValues
is truthy, fixing #2150 and #2708 - Expanded the
getDefaultFormState
util'sincludeUndefinedValues
prop to accept a boolean or"excludeObjectChildren"
if it does not want to include undefined values in nested objects - Updated
mergeObjects
to add newpreventDuplicates
mode when concatenating arrays so that only unique values from the source object array are copied to the destination object array - Fix
isObject
to correctly identify 'Date' as not an object, similar to 'File', thus preventing them from being merged with Object default values.
- Removed extraneous leading space on the examples in the validation documentation, fixing #3282
- Updated the documentation for
mergeObjects()
for the newpreventDuplicates
mode of concatenating arrays - Updated the documentation for unpkg releases to the correct name fixing the confusion found in #3262
- Fix Vite development server #3228
- BREAKING CHANGE: Disable form data validation for invalid JSON Schemas. Use @rjsf/validator-ajv6 if you need to validate against invalid schemas.
- Fix additionalProperties validation #3213
- Report all schema errors thrown by Ajv. Previously, we would only report errors thrown for a missing meta-schema. This behavior is unchanged for @rjsf/validator-ajv6.
- Disable Ajv strict mode by default.
- Add RJSF-specific additional properties keywords to Ajv to prevent errors from being reported in strict mode.
- For JSON Schemas with
$id
s, use a pre-compiled Ajv validation function when available. - No longer fail to validate inner schemas with
$id
s, fixing #2821.
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Automatically close single-choice Select widget on selection
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- BREAKING CHANGE: ShowErrorList prop changed to support
false
,top
orbottom
;true
is no longer a valid value as the default changed fromtrue
totop
#634 - Added the new generic,
S extends StrictRJSFSchema = RJSFSchema
, forschema
/rootSchema
to every component that needed it. - Fix omitExtraData with field names with dots #2643
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110 - Changed the
F = any
generic to beF extends FormContextType = any
to better support howformContext
is defined and used, partially fixing #3072
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Updated the tests to use the
@rjsf/validator-ajv8
fixing #3110
- Beta-only potentially BREAKING CHANGE: Changed all types that directly or indirectly defined
schema
/rootSchema
to add the genericS extends StrictRJSFSchema = RJSFSchema
and useS
as the type for them.StrictRJSFSchema
was added as the alias toJSON7Schema
andRJSFSchema
was modified to beStrictRJSFSchema & GenericObjectType
- This new generic was added BEFORE the newly added
F = any
generic because it is assumed that more people will want to change the schema than the formContext types - This provides future support for the newer draft versions of the schema
- Updated the
ValidatorType
interface to add a newrawValidation()
method for use by the playground - Added the
FormContextType
alias toGenericObjectType
and changing theF = any
generic to beF extends FormContextType = any
to better support howformContext
is defined and used, partially fixing #3072
- Fixed a few type casts given the new expanded definition of the
RJSFSchema
type change - Deprecated this library in favor of the
@rjsf/validator-ajv8
- Refactored out the
rawValidation()
function for use by the playground
- Updated the typing to add the new
S extends StrictRJSFSchema = RJSFSchema
generic and fixed up type casts - Added the
AjvClass
prop to theCustomValidatorOptionsType
to support using theAjv2019
orAjv2020
class implementation instead of the defaultAjv
class; fixing #3189 - Refactored out the
rawValidation()
function for use by the playground
- Updated the
5.x upgrade guide
andutility-functions.md
to document the newStrictRJSFSchema
, theS
generic and changing theF
generic extend - Updated the
validation
guide to document the newAjvClass
prop onCustomValidatorOptionsType
and mentioning the deprecation of@rjsf/validator-ajv6
- Updated the playground to add support for using the AJV 8 validator with the
draft-2019-09
anddraft-2020-12
schemas and to make theAJV8
validator the default validator, markingAJV6
as deprecated - Updated all the documentation to switch to Typescript notation where missing along with switching to using the
@rjsf/validator-ajv8
validator as the default - Added a way of doing a raw Ajv validation in the playground to determine whether an issue is with RJSF or Ajv
- Updated
FieldTemplate
to no longer render additional, unnecessary white space for fields that have emptyhelp
andextra
information, fixing #3147 - Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Make label generation consistent with other themes by refactoring the code into the
FieldTemplate
instead of having the widgets implementing the label, fixing #2007 - Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Added support for
chakra-react-select
v4, fixing #3152 - In
SelectWidget
useSelect
fromchakra-react-select
for both single- and multiple-choice select - In
SelectWidget
multiple-choice select display label rather than value for selected items - Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Extended
Form.onChange
to optionally return theid
of the field that caused the change, fixing #2768 - Fixed a regression in earlier v5 beta versions where additional properties could not be added when
additionalProperties
wastrue
(#3719). - Fixed a regression in v5 beta version where BooleanField was altering readonly props (#3188.
- Updated
ArrayFieldDescriptionTemplate
andArrayFieldTitleTemplate
to not render content whenui:label
is false, fixing #2535 - Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Updated
ArrayFieldTemplate
to always renderArrayFieldDescriptionTemplate
since that template deals with the optionaldescription
- Pass the
schema
into theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
, fixing #3176
- Updated the
onChange
prop onFieldProps
andFieldTemplateProps
to add an optionalid
parameter to the callback. - Updated the
DescriptionFieldProps
andTitleFieldProps
to add a new requiredschema
prop. Also updated theArrayFieldDescriptionTemplate
andArrayFieldTitleTemplate
to makedescription
andtitle
optional while pulling all the other props butid
from the associated type.
- Added an error boundary to prevent the entire app from crashing when an error is thrown by Form. See #3164 for closed issues.
- Updated the playground to log the
id
of the field being changed on theonChange
handler - Updated
form-props.md
to describe the newid
parameter being returned by theForm.onChange
handler - Updated
custom-templates.md
to add the newschema
prop to theArrayFieldDescriptionTemplate
,ArrayFieldTitleTemplate
,DescriptionFieldTemplate
andTitleFieldTemplate
documentation - Updated the
contributing.md
to describe setting up thehusky
precommit hooks for the first timegit clone
of the repo; Also added guidance for developing on underpowered computers; Finally discussed code-coverage requirements for some packages.
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, protecting against non-arrays - Converted
antd
to Typescript, indirectly fixing (#3123)
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Simplified the
CheckboxWidgets
code to eliminate a ternary in favor of a simpleinline={inline}
property since all the rest of the props were the same - Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, removing unnecessary casts toany
and protecting against non-arrays - Fixed an issue where
CheckboxesWidget
incorrectly rendered inner<form>
elements around each checkbox, fixing (#2355)
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, removing unnecessary casts toany
and protecting against non-arrays
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
- Updated the
validate()
method onForm
to makeschemaUtils
an optional third parameter rather than a required first parameter, making the signature backwards compatible with what was provided in previous versions.
- Add stubbed
WrapIfAdditionalTemplate
.additionalProperties
is currently not supported in@rjsf/fluent-ui
(See #2777). - Added
name
orid
(for those fluent components not supporting name) to theinput
components that were missing it to supportremix
- Fixed
DateTimeWidget
to properly useBaseInputTemplate
rather thanTextWidget
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, removing unnecessary casts and protecting against non-arrays, fixing (#2138) - Fixed
RadioWidget
so that it supports read-only and disabled states
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, removing unnecessary casts toany
and protecting against non-arrays
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Added
name
to theinput
components that were missing it to supportremix
- Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, removing unnecessary casts toany
and protecting against non-arrays
- Convert
WrapIfAdditional
toWrapIfAdditionalTemplate
- Fixed
ArrayFieldTemplate
andObjectFieldTemplate
'sAddButton
to show the non-labeled version. (#3142) - Added
name
to theinput
components that were missing it to supportremix
, including fixing incorrectname
s asid
s in some situations - Fixed
CheckboxesWidget
andRadioWidget
to have uniqueid
s for each radio element by appending theoption.value
, protecting against non-arrays - Converted
semantic-ui
to Typescript
- Added
WrapIfAdditionalTemplate
andWrapIfAdditionalTemplateProps
to simplify theming and make it easier to override Field behavior for schemas withadditionalProperties
.
- Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated the
FieldErrorTemplate
to remove the explicit typing of theerror
to string to support the two options - Updated
Theme
to use the renamedThemeProps
from@rjsf/core
- Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated
Theme
to use the renamedThemeProps
from@rjsf/core
- Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated the
FieldErrorTemplate
to remove the explicit typing of theerror
to string to support the two options - Implemented programmatic validation via new
validateForm()
method onForm
, fixing (#2755, #2552, #2381, #2343, #1006, #246) - Renamed
WithThemeProps
toThemeProps
to prevent another breaking-change by returning the type back to the name it had in version 4 - Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130) - Updated
ArrayField
to fall back toSchemaField
ifArraySchemaField
is not defined, fixing (#3131)
- Updated
Theme
to use the renamedThemeProps
from@rjsf/core
- Pass
uiSchema
appropriately to all of theIconButton
s andArrayFieldItemTemplate
components, fixing (#3130)
- Updated
Theme
to use the renamedThemeProps
from@rjsf/core
- Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated
Theme
to use the renamedThemeProps
from@rjsf/core
- Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated the
FieldErrorTemplate
to use thechildren
variation of theList.Item
that supports ReactElement - Pass
uiSchema
appropriately to all of theIconButton
s,ArrayFieldItemTemplate
andWrapIfAdditional
components, fixing (#3130)
- Updated the
FieldErrorProps
type to make it support an array of string and ReactElement - Updated the
IconButtonProps
type to adduiSchema
, adding the<T = any, F = any>
generics to it and the associatedButtonTemplates
inTemplatesType
AND addeduiSchema
toArrayFieldTemplateItemType
as well, fixing (#3130)
- Updated the
custom-templates.md
file to add the missing asterisk to the newFieldErrorTemplate
andFieldHelpTemplate
- Updated the playground to add a new button for programmatically validating a form
- Also updated the
validation.md
documentation to describe how to programmatically validate a form - Fixed the
chakra-ui
customuiSchema
documentation to make it clear they work on a per-field basis, fixing (#2865) - Added
formElement
breaking-change documentation to the5.x upgrade guide.md
- Replace Webpack with Vite
- Updated documentation for
ArraySchemaField
to better represent the updated implementation, fixing (#3131)
- When rendering additional properties with title, use the key of the property instead of the title.
- Only show description when there really IS a description, fixes (#2779)
- Refactored the
FieldErrorTemplate
from inside ofFieldTemplate
; fixes (#3104)
- Refactored the
FieldErrorTemplate
andFieldHelpTemplate
from inside ofFieldTemplate
; fixes (#3104)
- Refactored the
FieldErrorTemplate
andFieldHelpTemplate
from inside ofFieldTemplate
; fixes (#3104)
- Added new field
ArraySchemaField
, assigned toSchemaField
by default, that is used by theArrayField
to render thechildren
for each array field element - Refactored the internal
ErrorList
andHelp
components from inside ofSchemaField
to new templates:FieldErrorTemplate
andFieldHelpTemplate
; fixes (#3104)
- Refactored the
FieldErrorTemplate
andFieldHelpTemplate
from inside ofFieldTemplate
; fixes (#3104)
- Refactored the
FieldErrorTemplate
andFieldHelpTemplate
from inside ofFieldTemplate
; fixes (#3104)
- Converted
RawErrors
andHelpField
intoFieldErrorTemplate
andFieldHelpTemplate
, removing their explicit calls fromFieldTemplate
; fixes (#3104)
- Added new
FieldErrorProps
andFieldHelpProps
types - Added new
FieldErrorTemplate
andFieldHelpTemplate
to theTemplatesType
- Updated the
custom-templates.md
file to add documentation for the newFieldErrorTemplate
andFieldHelpTemplate
- Updated the
custom-widgets-fields.md
file to add documentation for the newArraySchemaField
field.
- Change custom attribute to bsPrefix by @WillowP, fixing (#2648)
- Added tests for the new
@rjsf/validator-ajv8
to thevalidate_test.js
file to ensure the validation works with both validator implementations
- Fixed the
README.md
to correct the package name in several places to match the actual package
- Fixed the
README.md
to remove references to ajv6 validator, adding link to theutility-functions.md
in the docs - Fixed the
README.md
to correct the package name in several places to match the actual package - Updated
getDefaultFormState()
so that oneOf and anyOf default values do not always use the first option when formData contains a better option, fixing (#2183)
- Fixed the
README.md
to correct the package name in several places to match the actual package
- Support for localization (L10n) on a customized validator using a
Localizer
function passed as a second parameter tocustomizeValidator()
, fixing (#846, and #1195) - Fixed the
README.md
to correct the package name in several places to match the actual package
- Added two new validator selections,
AJV8
andAJV8_es
to the list of available validators for the playground; Using the second one will translate error messages to spanish. - Updated the validation documentation to clarify the case of empty strings being stored as
null
in certain cases.
- Added the new Ajv 8 based validator so that it can get published on npm
- Switched
devDependencies
for React to 17.x and usedts
to build and test the library (rather thantsdx
)
- Added a
requestSubmit()
call to theForm.submit()
function, fixing (#2104, #3023) - Added missing
children
property on theFormProps
type forForm
- Throw an error when the required
validator
prop has not been provided to theForm
- Do not show errors if
extraErrors
has[]
(#2576). - Added support for
schema.examples
in the material ui theme fixing (#2368, #2557)
- Upgraded from the
1.x
to2.x
version ofsemantic-ui-react
- Added support for
schema.examples
in the material ui theme fixing (#2368, #2557)
- Avoid importing the whole of
react-icons
(#3046, react-icons/react-icons#154)
- Fixed missing
playground
import error by addingsource-map-loader
- Fixed up the incorrectly formatted
5.x Migration Guide
- Added a
Programmatic Submit
button on the playground form to allow users to test the ability to programmatically submit a form - Regenerated the
package-lock.json
files using cleannode_modules
directories - Fixed issue with playground controls in top right corner not functioning properly due to missing validator
- Added peer dependencies to new
@rjsf/utils
library now that it is published on npm
- Node 16 is now the default node engine for all packages, fixing (#2687)
- Refactored all themes to use the new
@rjsf/utils
library functions and types - Refactored the individual theme forms to consolidate
templates
as part of the fix for #2526 - Bumped most devDependencies to the latest versions where possible
- Switched all repos
package.json
andpackage-lock.json
files to be built and maintained by Node 16. - Adding button templates help to change text for buttons (#2082, #2357)
- New package created by refactoring and converting to Typescript the
utils.js
file fromcore
into independent functions. - Updated
types
fromcore
inutils
to better match the implementation across all themes - Clear errors on
formData
change whenliveOmit=true
when "additionalProperties: false" issue 1507 (#2631)
- New package created by refactoring and converting to Typescript the
validator.js
file fromcore
into independent functions as well as a class that implements the newValidatorType
interface. - Added support for customizing the options passed to the creation of the
ajv
instance. - A BREAKING CHANGE to
toErrorList()
was made so that it takesfieldPath: string[]
rather thanfieldName='root'
as part of the fix to (#1596)- The returned
errors
also now addsproperty
from thefieldPath
along with the proper path from theproperty
to thestack
message, making it consistent with the AJV errors.- Previously the
stack
attribute would sayroot: error message
; now it says. error message
- Previously the
- In addition, the extra information provided by AJV is no longer lost from the
errors
when merged with custom validation, fixing (#1596).
- The returned
- Converted core to Typescript (#583)
ui:emptyValue
now works with selects (#1041)- Refactoring
utils.js
into the new@rjsf/utils
fixes (#2719) - BREAKING CHANGE Fix overriding core submit button className (#2979)
- Fix
ui:field
with anyOf or oneOf no longer rendered twice (#2890) - BREAKING CHANGE Fixed
anyOf
andoneOf
getting incorrect, potentially duplicate ids when combined with array (#2197) formContext
is now passed properly toSchemaField
, fixes (#2394, #2274)- Added
ui:duplicateKeySuffixSeparator
to customize how duplicate object keys are renamed when usingadditionalProperties
. - The
extraErrors
are now consistently appended onto the end of the schema validation-basederrors
information that is returned via theonErrors()
callback when submit fails.- In addition, the extra information provided by AJV is no longer stripped from the
errors
during the merge process, fixing (#1596).
- In addition, the extra information provided by AJV is no longer stripped from the
- Fixed id generation for
RadioWidget
to no longer use random numbers fixing (#2461) - Correctly call the
onChange
handler in the new set of props if it changed, fixing (#1708). - Fixed race condition for
onChange
whenformData
is controlled prop, fixing (#513),
- Fix esm build to use
@rollup/plugin-replace
to replaceantd/lib
andrc-picker/lib
withantd/es
andrc-picker/es
respectively, fixing (#2962)
- Bootstrap-4
withTheme
customizations should work properly now (#2058) ArrayFieldTemplate
refactor seems to have fixed #2775- Fix issues with
SelectField
(#2616, #2875)
- Properly handle the hidden field in this theme (#2571)
- The theme for Material UI version 5 (i.e.
@rjsf/mui
) was split out of the theme for version 4 (i.e.@rjsf/material-ui
) to resolve the following issues: - Material-UI TextWidget now respects
inputType
in uiSchema (#2057)- Also respects
step
fornumber
type (#2488)
- Also respects
- Material-UI UpDownWidget now support min/max/step (#2022)
- Properly handle the hidden field in this theme (#2571)
- Select properly accepts true or false (#2326)
- The theme for Material UI version 5 (i.e.
@rjsf/mui
) was split out of the theme for version 4 (i.e.@rjsf/material-ui
) to resolve the following issues: - Material-UI TextWidget now respects
inputType
in uiSchema (#2057)- Also respects
step
fornumber
type (#2488)
- Also respects
- Material-UI UpDownWidget now support min/max/step (#2022)
- Properly handle the hidden field in this theme (#2571)
- Fix missing error class on fields (#2666)
- Fixed the
main
definition insemantic-ui
to fix (withastro/astro#4357) - Properly handle the hidden field in this theme (#2571)
- Demonstrate use of
ui:field
withanyOf
(#2890) - Playground now uses webpack 5
- Corrected number field default (#2358)
- fix typo by @epicfaace in #2854
- Build all packages with TypeScript, including core by @nickgros in #2799
- fix(@rjsf/chakra-ui): append SubmitButton by @terrierscript in #2860
- fix: Pass uiSchema to custom ArrayField by @bakajvo in #2769
- fix(@rjsf-antd): Submit button type bug (#2867) by @sarpere in #2869
- Docs: Clarify registry object structure and that it's passed down to custom widgets by @epicfaace in #2886
- fix: allow UISchemaSubmitButtonOptions properties to be undefined by @maxpou in #2876
- Create FUNDING.yml by @epicfaace in #2866
- docs: fix schema dependencies link by @epicfaace in #2885
- chore(deps): bump core-js-pure from 3.21.1 to 3.23.3 by @dependabot in #2902
- chore(deps): bump minimist from 1.2.5 to 1.2.6 in /packages/fluent-ui by @dependabot in #2805
- fix(@rjsf/bootstrap-4): Change custom attribute to bsPrefix by @WillowP in #3049
- Feature for ui:submitButtonOptions on the submit button for forms (#2640)
- Fix
ui:orderable
andui:removable
in arrays (#2797) - Fix for nested allOf blocks with multiple if/then/else statements failing to render correctly (#2839)
- Enable ui options in playground, to demonstrate submit button options (#2640)
- Document the
material-ui
context and hook (#2757)
- SubmitButton widget to use new ui:submitButtonOptions on the submit button for forms (#2833)
- Fixed bundler warning issue (#2762) by exporting a
@rjsf/material-ui/v4
and@rjsf/material-ui/v5
sub-package- NOTE:
@rjsf/material-ui
was retained to avoid a breaking change, but using it will continue to cause bundler warnings - See the
README.md
for the@rjsf/material-ui
package for updated usage information
- NOTE:
- Fixed (#2831) for
material-ui
by removing theDefaultChildren
passed into the themes
- SubmitButton widget to use new ui:submitButtonOptions on the submit button for forms (#2640)
- SubmitButton widget to use new ui:submitButtonOptions on the submit button for forms (#2640)
- SubmitButton widget to use new ui:submitButtonOptions on the submit button for forms (#2640)
- SubmitButton widget to use new ui:submitButtonOptions on the submit button for forms (#2640)
- Fix bloated bundle size by individually requiring all MUI components (#2754)
- Add new
useMuiComponent()
hook as a shortcut foruseContext(MuiComponentContext)
- Added support for additionalProperties schema property (#2817)
- To improve performance, skip validating subschemas in oneOf / anyOf if formData is undefined (#2676)
- Fixed the
toIdSchema()
typescript definition to add newidSeparator
prop along with the spelling ofidPrefix
- Also passed the new
idSeparator
prop through to theAnyOfField
andOneOfField
inside ofSchemaField
- Updated
ArrayField
in@rjsf/core
to passidSeparator
andidPrefix
through toSchemaField
, fixing a small bug
- Also passed the new
- Added support for the new
ui:hideError
feature, which allows you to hide errors at a field level
- Remove
console.log()
of the import error inMaterialUIContext
andMui5Context
- Export the
MaterialComponentContext
(#2724)
- Added documentation for the new
ui:hideError
feature
- Bumped the peer dependencies of
@rjsf/core
to^4.0.0
for all of themes inpackage.json
- Also, added tests to all themes to verify that the
tagName
prop works as expected
- Updated
Form
to support thesemantic-ui
andmaterial-ui
themes to allow them work whentagName
is provided - Support if/then/else (#2700)
- Fixed up the
Theme
andTheme5
implementations to deal with a regression in which addingtagName
caused the 2 themes to not work - Only
console.log()
the import error inMaterialUIContext
andMui5Context
when not inproduction
to eliminate tons of warnings for released code
- Fixed up the
Theme
implementation to deal with a regression in which addingtagName
caused the theme to not work
- Add React 17 as a supported peer-dependency
- Introduce
idSeparator
prop to change the path separator used to generate field names (#2628) - Array fields support custom widgets (previously, only multiple-choice arrays with
enums
oruniqueItems
support it) (#2697)
- Added React 17 as an optional peer dependency
- Minimum version of React required to use package is now React 16.3
- Bumped required minimum versions of
@material-ui/core
and@material-ui/icons
to the latest (4.12.0
and4.11.1
)- New exports:
MuiForm4
andTheme4
are aliases to the material-ui version 4MuiForm
andTheme
- The Material-UI 4 theme will fallback to a form with a message indicating
@material-ui
is not available when one (or both) of the libraries are not installed
- New exports:
- Added support for material-ui version 5 on top of React 17
- Requires React 17 so will need to upgrade project
- Added
@mui/material
,@mui/icons-material
,@emotion/react
and@emotion/styled
as optional peer dependencies - New exports:
MuiForm5
andTheme5
support using the Material UI 5 libraries instead of version 4 - The Material-UI 5 theme will fallback to a form with a message indicating
@mui
is not available when one (or both) of the libraries are not installed
- Added support for this new theme
- Upgraded playground to use React 17
- Differentiated the material-ui 4 and 5 themes
- Added chakra-ui theme
- "semantic-ui-react" dependency updated to v1.3.1 (#2590)
- fixed an issue where all semantic props overwritten when a single semantic theme-specific prop is passed in (issue 2619) (#2590)
- Don't crash when non-object formData is passed in to a schema item with additionalProperties (#2595)
- Upgrade jsonpointer to 5.0.0 to address security vulnerability (#2599)
- Feature for ui:submitButtonOptions on the submit button for forms (#2640)
- Fix for clearing errors after updating and submitting form (#2536)
- bootstrap-4 TextWidget wrappers now pull from registry, add rootSchema to Registry, fix FieldProps.onFocus type to match WidgetProps (#2519)
- Added global
readonly
flag to theForm
(#2554) - Fix to allow changing
additionalProperties
to falsy values (#2540) - Pass uiSchema to custom Boolean widget (#2587
- bootstrap-4 TextWidget wrappers now pull from registry, add rootSchema to Registry, fix FieldProps.onFocus type to match WidgetProps (#2519)
- fluent-ui: Allow value of 0 in TextWidget (#2497)
- Several dependency updates
- Added global
readonly
flag to theForm
(#2554) - Enable source maps in playground, for development (#2568)
- Properly assign label prop for MultiSelect ArrayField (#2459)
- Take into account implicitly defined types when rendering labels for fields (#2502)
- Add default Form export to @rjsf/antd (#2514)
- Make material-ui and fluent-ui pull TextWidget from the registry; remove registry prop from in TextWidget (#2515)
- Make material-ui and fluent-ui pull TextWidget from the registry; remove registry prop from in TextWidget (#2515)
- Use getDisplayLabel to properly show labels for widgets (#2225)
- Add submit button, email, url, date widgets (#2224)
- Several dependency updates