- {this.props.value && setting.type === "image" && (
+ {!valueIsMissing(this.props?.value) && setting.type === "image" && (
![]({String(this.props.value)})
)}
{this.createEditableInput(setting)}
@@ -111,7 +117,7 @@ export default class ProtocolFormField extends React.Component<
label: setting.label,
required: setting.required,
description: setting.description,
- value: (this.props && this.props.value) || setting.default,
+ value: defaultValueIfMissing(this.props.value, setting.default),
error: this.props && this.props.error,
ref: this.elementRef,
onChange: this.props.onChange,
diff --git a/src/components/__tests__/EditableInput-test.tsx b/src/components/__tests__/EditableInput-test.tsx
index 219d9a094..408ffad78 100644
--- a/src/components/__tests__/EditableInput-test.tsx
+++ b/src/components/__tests__/EditableInput-test.tsx
@@ -50,11 +50,16 @@ describe("EditableInput", () => {
expect(description.html()).to.contain("
description
");
});
- it("shows initial value from props", () => {
+ it("shows initial value from props, even if zero", () => {
expect(wrapper.state().value).to.equal("initial value");
- const input = wrapper.find("input");
+ let input = wrapper.find("input");
expect(input.prop("value")).to.equal("initial value");
expect(input.prop("checked")).to.equal(true);
+
+ wrapper.setProps({ value: 0});
+ expect(wrapper.state().value).to.equal(0);
+ input = wrapper.find("input");
+ expect(input.prop("value")).to.equal(0);
});
it("shows initial checked from props", () => {