diff --git a/src/components/fields/ArrayField.js b/src/components/fields/ArrayField.js
index 67f433394d..b8ad575a9f 100644
--- a/src/components/fields/ArrayField.js
+++ b/src/components/fields/ArrayField.js
@@ -15,6 +15,7 @@ import {
toIdSchema,
getDefaultRegistry,
} from "../../utils";
+import { registryShape } from "../../types";
function ArrayFieldTitle({ TitleField, idSchema, title, required }) {
if (!title) {
@@ -649,14 +650,7 @@ if (process.env.NODE_ENV !== "production") {
disabled: PropTypes.bool,
readonly: PropTypes.bool,
autofocus: PropTypes.bool,
- registry: PropTypes.shape({
- widgets: PropTypes.objectOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object])
- ).isRequired,
- fields: PropTypes.objectOf(PropTypes.func).isRequired,
- definitions: PropTypes.object.isRequired,
- formContext: PropTypes.object.isRequired,
- }),
+ registry: registryShape,
};
}
diff --git a/src/components/fields/BooleanField.js b/src/components/fields/BooleanField.js
index 5531486283..d97dd56898 100644
--- a/src/components/fields/BooleanField.js
+++ b/src/components/fields/BooleanField.js
@@ -7,6 +7,7 @@ import {
optionsList,
getDefaultRegistry,
} from "../../utils";
+import { registryShape } from "../../types";
function BooleanField(props) {
const {
@@ -59,14 +60,7 @@ if (process.env.NODE_ENV !== "production") {
disabled: PropTypes.bool,
readonly: PropTypes.bool,
autofocus: PropTypes.bool,
- registry: PropTypes.shape({
- widgets: PropTypes.objectOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object])
- ).isRequired,
- fields: PropTypes.objectOf(PropTypes.func).isRequired,
- definitions: PropTypes.object.isRequired,
- formContext: PropTypes.object.isRequired,
- }),
+ registry: registryShape,
};
}
diff --git a/src/components/fields/NumberField.js b/src/components/fields/NumberField.js
index 30c297b19b..2c64fcc2b8 100644
--- a/src/components/fields/NumberField.js
+++ b/src/components/fields/NumberField.js
@@ -2,6 +2,7 @@ import React from "react";
import PropTypes from "prop-types";
import { asNumber } from "../../utils";
+import { registryShape } from "../../types";
function NumberField(props) {
const { StringField } = props.registry.fields;
@@ -15,6 +16,7 @@ function NumberField(props) {
if (process.env.NODE_ENV !== "production") {
NumberField.propTypes = {
+ registry: registryShape.isRequired,
schema: PropTypes.object.isRequired,
uiSchema: PropTypes.object,
idSchema: PropTypes.object,
diff --git a/src/components/fields/ObjectField.js b/src/components/fields/ObjectField.js
index e10c22410c..48a082076f 100644
--- a/src/components/fields/ObjectField.js
+++ b/src/components/fields/ObjectField.js
@@ -6,6 +6,7 @@ import {
retrieveSchema,
getDefaultRegistry,
} from "../../utils";
+import { registryShape } from "../../types";
function DefaultObjectFieldTemplate(props) {
const { TitleField, DescriptionField } = props;
@@ -147,14 +148,7 @@ if (process.env.NODE_ENV !== "production") {
required: PropTypes.bool,
disabled: PropTypes.bool,
readonly: PropTypes.bool,
- registry: PropTypes.shape({
- widgets: PropTypes.objectOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object])
- ).isRequired,
- fields: PropTypes.objectOf(PropTypes.func).isRequired,
- definitions: PropTypes.object.isRequired,
- formContext: PropTypes.object.isRequired,
- }),
+ registry: registryShape,
};
}
diff --git a/src/components/fields/SchemaField.js b/src/components/fields/SchemaField.js
index 4c9b109cb7..5ab833b6b7 100644
--- a/src/components/fields/SchemaField.js
+++ b/src/components/fields/SchemaField.js
@@ -9,6 +9,7 @@ import {
isFilesArray,
deepEquals,
} from "../../utils";
+import { registryShape } from "../../types";
import UnsupportedField from "./UnsupportedField";
const REQUIRED_FIELD_SYMBOL = "*";
@@ -288,17 +289,7 @@ if (process.env.NODE_ENV !== "production") {
idSchema: PropTypes.object,
formData: PropTypes.any,
errorSchema: PropTypes.object,
- registry: PropTypes.shape({
- widgets: PropTypes.objectOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object])
- ).isRequired,
- fields: PropTypes.objectOf(PropTypes.func).isRequired,
- definitions: PropTypes.object.isRequired,
- ArrayFieldTemplate: PropTypes.func,
- ObjectFieldTemplate: PropTypes.func,
- FieldTemplate: PropTypes.func,
- formContext: PropTypes.object.isRequired,
- }),
+ registry: registryShape,
};
}
diff --git a/src/components/fields/StringField.js b/src/components/fields/StringField.js
index 9ecee6eb93..c351085379 100644
--- a/src/components/fields/StringField.js
+++ b/src/components/fields/StringField.js
@@ -8,6 +8,7 @@ import {
optionsList,
getDefaultRegistry,
} from "../../utils";
+import { registryShape } from "../../types";
function StringField(props) {
const {
@@ -64,14 +65,7 @@ if (process.env.NODE_ENV !== "production") {
onBlur: PropTypes.func,
onFocus: PropTypes.func,
formData: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
- registry: PropTypes.shape({
- widgets: PropTypes.objectOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object])
- ).isRequired,
- fields: PropTypes.objectOf(PropTypes.func).isRequired,
- definitions: PropTypes.object.isRequired,
- formContext: PropTypes.object.isRequired,
- }),
+ registry: registryShape,
formContext: PropTypes.object.isRequired,
required: PropTypes.bool,
disabled: PropTypes.bool,
diff --git a/src/components/widgets/AltDateTimeWidget.js b/src/components/widgets/AltDateTimeWidget.js
index 2d18450ef5..61ee19c166 100644
--- a/src/components/widgets/AltDateTimeWidget.js
+++ b/src/components/widgets/AltDateTimeWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function AltDateTimeWidget(props) {
const { AltDateWidget } = props.registry.widgets;
return ;
@@ -8,6 +10,7 @@ function AltDateTimeWidget(props) {
if (process.env.NODE_ENV !== "production") {
AltDateTimeWidget.propTypes = {
+ registry: registryShape.isRequired,
schema: PropTypes.object.isRequired,
id: PropTypes.string.isRequired,
value: PropTypes.string,
diff --git a/src/components/widgets/AltDateWidget.js b/src/components/widgets/AltDateWidget.js
index b28f48e75e..eb9ce2c81d 100644
--- a/src/components/widgets/AltDateWidget.js
+++ b/src/components/widgets/AltDateWidget.js
@@ -2,6 +2,7 @@ import React, { Component } from "react";
import PropTypes from "prop-types";
import { shouldRender, parseDateString, toDateString, pad } from "../../utils";
+import { registryShape } from "../../types";
function rangeOptions(start, stop) {
let options = [];
@@ -155,6 +156,7 @@ class AltDateWidget extends Component {
if (process.env.NODE_ENV !== "production") {
AltDateWidget.propTypes = {
+ registry: registryShape.isRequired,
schema: PropTypes.object.isRequired,
id: PropTypes.string.isRequired,
value: PropTypes.string,
diff --git a/src/components/widgets/ColorWidget.js b/src/components/widgets/ColorWidget.js
index de622b0a6f..f5fb7affbb 100644
--- a/src/components/widgets/ColorWidget.js
+++ b/src/components/widgets/ColorWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function ColorWidget(props) {
const { disabled, readonly, registry: { widgets: { BaseInput } } } = props;
return ;
@@ -8,6 +10,7 @@ function ColorWidget(props) {
if (process.env.NODE_ENV !== "production") {
ColorWidget.propTypes = {
+ registry: registryShape.isRequired,
schema: PropTypes.object.isRequired,
id: PropTypes.string.isRequired,
value: PropTypes.string,
diff --git a/src/components/widgets/DateTimeWidget.js b/src/components/widgets/DateTimeWidget.js
index cf787ec9f7..996bebe330 100644
--- a/src/components/widgets/DateTimeWidget.js
+++ b/src/components/widgets/DateTimeWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+
import { pad } from "../../utils";
+import { registryShape } from "../../types";
export function utcToLocal(jsonDate) {
if (!jsonDate) {
@@ -46,6 +48,7 @@ function DateTimeWidget(props) {
if (process.env.NODE_ENV !== "production") {
DateTimeWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.string,
};
}
diff --git a/src/components/widgets/DateWidget.js b/src/components/widgets/DateWidget.js
index 5ce3eacd96..733c504176 100644
--- a/src/components/widgets/DateWidget.js
+++ b/src/components/widgets/DateWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function DateWidget(props) {
const { onChange, registry: { widgets: { BaseInput } } } = props;
return (
@@ -14,6 +16,7 @@ function DateWidget(props) {
if (process.env.NODE_ENV !== "production") {
DateWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.string,
};
}
diff --git a/src/components/widgets/EmailWidget.js b/src/components/widgets/EmailWidget.js
index bdfe7a7ec7..60c9addcd8 100644
--- a/src/components/widgets/EmailWidget.js
+++ b/src/components/widgets/EmailWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function EmailWidget(props) {
const { BaseInput } = props.registry.widgets;
return ;
@@ -8,6 +10,7 @@ function EmailWidget(props) {
if (process.env.NODE_ENV !== "production") {
EmailWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.string,
};
}
diff --git a/src/components/widgets/PasswordWidget.js b/src/components/widgets/PasswordWidget.js
index 397b1adca2..2c2159a935 100644
--- a/src/components/widgets/PasswordWidget.js
+++ b/src/components/widgets/PasswordWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function PasswordWidget(props) {
const { BaseInput } = props.registry.widgets;
return ;
@@ -8,6 +10,7 @@ function PasswordWidget(props) {
if (process.env.NODE_ENV !== "production") {
PasswordWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.string,
};
}
diff --git a/src/components/widgets/RangeWidget.js b/src/components/widgets/RangeWidget.js
index 6e7e11184c..8c4872de36 100644
--- a/src/components/widgets/RangeWidget.js
+++ b/src/components/widgets/RangeWidget.js
@@ -2,6 +2,7 @@ import React from "react";
import PropTypes from "prop-types";
import { rangeSpec } from "../../utils";
+import { registryShape } from "../../types";
function RangeWidget(props) {
const { schema, value, registry: { widgets: { BaseInput } } } = props;
@@ -15,6 +16,7 @@ function RangeWidget(props) {
if (process.env.NODE_ENV !== "production") {
RangeWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};
}
diff --git a/src/components/widgets/TextWidget.js b/src/components/widgets/TextWidget.js
index 027e4e26f1..9994e0fce7 100644
--- a/src/components/widgets/TextWidget.js
+++ b/src/components/widgets/TextWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function TextWidget(props) {
const { BaseInput } = props.registry.widgets;
return ;
@@ -8,6 +10,7 @@ function TextWidget(props) {
if (process.env.NODE_ENV !== "production") {
TextWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};
}
diff --git a/src/components/widgets/URLWidget.js b/src/components/widgets/URLWidget.js
index 8b3448a863..c61009ef9a 100644
--- a/src/components/widgets/URLWidget.js
+++ b/src/components/widgets/URLWidget.js
@@ -1,6 +1,8 @@
import React from "react";
import PropTypes from "prop-types";
+import { registryShape } from "../../types";
+
function URLWidget(props) {
const { BaseInput } = props.registry.widgets;
return ;
@@ -8,6 +10,7 @@ function URLWidget(props) {
if (process.env.NODE_ENV !== "production") {
URLWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.string,
};
}
diff --git a/src/components/widgets/UpDownWidget.js b/src/components/widgets/UpDownWidget.js
index 933f65933a..2cd5eb2d0a 100644
--- a/src/components/widgets/UpDownWidget.js
+++ b/src/components/widgets/UpDownWidget.js
@@ -2,6 +2,7 @@ import React from "react";
import PropTypes from "prop-types";
import { rangeSpec } from "../../utils";
+import { registryShape } from "../../types";
function UpDownWidget(props) {
const { registry: { widgets: { BaseInput } } } = props;
@@ -10,6 +11,7 @@ function UpDownWidget(props) {
if (process.env.NODE_ENV !== "production") {
UpDownWidget.propTypes = {
+ registry: registryShape.isRequired,
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
};
}
diff --git a/src/types.js b/src/types.js
new file mode 100644
index 0000000000..1fb0824e29
--- /dev/null
+++ b/src/types.js
@@ -0,0 +1,13 @@
+import PropTypes from "prop-types";
+
+const { func, object, objectOf, oneOfType, shape } = PropTypes;
+
+export const registryShape = shape({
+ widgets: objectOf(oneOfType([func, object])).isRequired,
+ fields: objectOf(func).isRequired,
+ definitions: object.isRequired,
+ formContext: object.isRequired,
+ ArrayFieldTemplate: func,
+ ObjectFieldTemplate: func,
+ FieldTemplate: func,
+});