Skip to content

Commit da9b8ba

Browse files
committed
doc: add jsdoc comments to new functions
1 parent e5907b7 commit da9b8ba

File tree

4 files changed

+34
-19
lines changed

4 files changed

+34
-19
lines changed

src/lib/forms/widgets/select/AutocompleteDropdown.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Field } from "formik";
77
import { FieldLabel } from "../../FieldLabel";
88
import { RemoteSelectField } from "../../RemoteSelectField";
99
import {
10-
createDynamicOverridableWidget,
10+
createDynamicOverridableComponent,
1111
createShowHideComponent,
1212
fieldCommonProps,
1313
} from "../../../utils";
@@ -103,6 +103,6 @@ _AutocompleteDropdownComponent.defaultProps = {
103103
export const AutocompleteDropdownComponent = createShowHideComponent(
104104
_AutocompleteDropdownComponent
105105
);
106-
export const AutocompleteDropdown = createDynamicOverridableWidget(
106+
export const AutocompleteDropdown = createDynamicOverridableComponent(
107107
AutocompleteDropdownComponent
108108
);

src/lib/forms/widgets/select/Dropdown.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import PropTypes from "prop-types";
33
import { FieldLabel } from "../../FieldLabel";
44
import { SelectField } from "../../SelectField";
55
import {
6-
createDynamicOverridableWidget,
6+
createDynamicOverridableComponent,
77
createShowHideComponent,
88
fieldCommonProps,
99
} from "../../../utils";
@@ -87,4 +87,4 @@ _DropdownComponent.defaultProps = {
8787
};
8888

8989
export const DropdownComponent = createShowHideComponent(_DropdownComponent);
90-
export const Dropdown = createDynamicOverridableWidget(_DropdownComponent);
90+
export const Dropdown = createDynamicOverridableComponent(_DropdownComponent);

src/lib/utils/fieldComponents.js

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,18 @@ export const fieldCommonProps = {
2727
required: PropTypes.bool,
2828
};
2929

30-
export const createCommonDepositFieldComponent = (id, Child) => {
31-
const Component = ({ hidden, ...props }) => {
30+
/**
31+
* Creates a component that de-renders when the `hidden` prop is `true`.
32+
* All props passed to the `ShowHideComponent` are forwarded to the child component except the `hidden` prop.
33+
*
34+
* @param Component - The child component
35+
* @param {string=} id - An optional OverridableID for debugging purposes
36+
*/
37+
export const createShowHideComponent = (Component, id) => {
38+
const ShowHideComponent = ({ hidden, ...props }) => {
3239
if (props.disabled && props.required) {
3340
throw new Error(`Cannot make field component ${id} both required and disabled`);
3441
}
35-
36-
if (hidden) return null;
37-
return <Child {...props} />;
38-
};
39-
40-
Component.propTypes = Child.propTypes;
41-
return Overridable.component(id, Component);
42-
};
43-
44-
export const createShowHideComponent = (Component) => {
45-
const ShowHideComponent = ({ hidden, ...props }) => {
4642
if (hidden) return null;
4743
return <Component {...props} />;
4844
};
@@ -55,7 +51,26 @@ export const createShowHideComponent = (Component) => {
5551
return ShowHideComponent;
5652
};
5753

58-
export const createDynamicOverridableWidget = (Widget) => {
54+
/**
55+
* Creates an overridable component with show/hide functionality based on the `hidden` prop.
56+
* All high-level fields in the deposit form are exported through this function, and this
57+
* is the only version of the component that should be exported.
58+
*
59+
* @param {string} id - The Overridable ID to use
60+
* @param Child - The unexported child component
61+
*/
62+
export const createCommonDepositFieldComponent = (id, Child) => {
63+
const Component = createShowHideComponent(Child);
64+
Component.propTypes = Child.propTypes;
65+
return Overridable.component(id, Component);
66+
};
67+
68+
/**
69+
* Create a component whos Overridable ID is defined via a prop at runtime rather than pre-assigned.
70+
* This is necessary for custom fields, where Python will inject the Overridable ID from the user's
71+
* configuration, allowing features like `parametrize` to be applied also to custom fields.
72+
*/
73+
export const createDynamicOverridableComponent = (Widget) => {
5974
const Component = ({ id, ...props }) => {
6075
if (id === undefined) return <Widget {...props} />;
6176

src/lib/utils/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export { humanReadableBytes } from "./humanReadableBytes";
22
export { dropdownOptionsGenerator } from "./dropdownOptionsGenerator";
33
export {
44
createCommonDepositFieldComponent,
5-
createDynamicOverridableWidget,
5+
createDynamicOverridableComponent,
66
createShowHideComponent,
77
fieldCommonProps,
88
mandatoryFieldCommonProps,

0 commit comments

Comments
 (0)