Skip to content

Commit 10a6b64

Browse files
piepluepicfaace
authored andcommittedMar 5, 2019
Bug Fix empty html useless added by PR #1123 / v1.2.0 (#1158)
* Infer type from enum if a type is not provided to SelectWidget (#1100) Connects to #1098 Change-type: minor Signed-off-by: Lucian <lucian.buzzo@gmail.com> * No more useless div on schema field not additional * Fix tests (remove useles html) - Revert some test added by https://github.com/mozilla-services/react-jsonschema-form/pull/1123/files - use new css class for form-additional insted layout css class for test selection * Don't use WrapIfAdditonal Component to hav a clerer diff, but adding code duplicate * Use a WrapIfAdditional Component to have a cleanner code / diff * Fix tests * Ignore vscode Ide folder * Remove useless parentProps * Fix old test selector for form additional
1 parent 92233e4 commit 10a6b64

File tree

6 files changed

+82
-58
lines changed

6 files changed

+82
-58
lines changed
 

‎.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ dist
122122
lib
123123
yarn.lock
124124

125+
# IDE
126+
.vscode
127+
125128
# Code coverage
126129
coverage
127130
.nyc_output

‎src/components/fields/SchemaField.js

+59-45
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ function ErrorList(props) {
122122
function DefaultTemplate(props) {
123123
const {
124124
id,
125-
classNames,
126125
label,
127126
children,
128127
errors,
@@ -131,56 +130,19 @@ function DefaultTemplate(props) {
131130
hidden,
132131
required,
133132
displayLabel,
134-
onKeyChange,
135-
onDropPropertyClick,
136133
} = props;
137134
if (hidden) {
138135
return <div className="hidden">{children}</div>;
139136
}
140137

141-
const additional = props.schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
142-
const keyLabel = `${label} Key`;
143-
144138
return (
145-
<div className={classNames}>
146-
<div className={additional ? "row" : ""}>
147-
{additional && (
148-
<div className="col-xs-5 form-additional">
149-
<div className="form-group">
150-
<Label label={keyLabel} required={required} id={`${id}-key`} />
151-
<LabelInput
152-
label={label}
153-
required={required}
154-
id={`${id}-key`}
155-
onChange={onKeyChange}
156-
/>
157-
</div>
158-
</div>
159-
)}
160-
161-
<div
162-
className={additional ? "form-additional form-group col-xs-5" : ""}>
163-
{displayLabel && <Label label={label} required={required} id={id} />}
164-
{displayLabel && description ? description : null}
165-
{children}
166-
{errors}
167-
{help}
168-
</div>
169-
<div className="col-xs-2">
170-
{additional && (
171-
<IconButton
172-
type="danger"
173-
icon="remove"
174-
className="array-item-remove btn-block"
175-
tabIndex="-1"
176-
style={{ border: "0" }}
177-
disabled={props.disabled || props.readonly}
178-
onClick={onDropPropertyClick(props.label)}
179-
/>
180-
)}
181-
</div>
182-
</div>
183-
</div>
139+
<WrapIfAdditional {...props}>
140+
{displayLabel && <Label label={label} required={required} id={id} />}
141+
{displayLabel && description ? description : null}
142+
{children}
143+
{errors}
144+
{help}
145+
</WrapIfAdditional>
184146
);
185147
}
186148
if (process.env.NODE_ENV !== "production") {
@@ -211,6 +173,58 @@ DefaultTemplate.defaultProps = {
211173
displayLabel: true,
212174
};
213175

176+
function WrapIfAdditional(props) {
177+
const {
178+
id,
179+
classNames,
180+
disabled,
181+
label,
182+
onKeyChange,
183+
onDropPropertyClick,
184+
readonly,
185+
required,
186+
schema,
187+
} = props;
188+
const keyLabel = `${label} Key`; // i18n ?
189+
const additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
190+
191+
if (!additional) {
192+
return <div className={classNames}>{props.children}</div>;
193+
}
194+
195+
return (
196+
<div className={classNames}>
197+
<div className="row">
198+
<div className="col-xs-5 form-additional">
199+
<div className="form-group">
200+
<Label label={keyLabel} required={required} id={`${id}-key`} />
201+
<LabelInput
202+
label={label}
203+
required={required}
204+
id={`${id}-key`}
205+
onChange={onKeyChange}
206+
/>
207+
</div>
208+
</div>
209+
<div className="form-additional form-group col-xs-5">
210+
{props.children}
211+
</div>
212+
<div className="col-xs-2">
213+
<IconButton
214+
type="danger"
215+
icon="remove"
216+
className="array-item-remove btn-block"
217+
tabIndex="-1"
218+
style={{ border: "0" }}
219+
disabled={disabled || readonly}
220+
onClick={onDropPropertyClick(label)}
221+
/>
222+
</div>
223+
</div>
224+
</div>
225+
);
226+
}
227+
214228
function SchemaFieldRender(props) {
215229
const {
216230
uiSchema,

‎test/ArrayFieldTemplate_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ describe("ArrayFieldTemplate", () => {
5353
ArrayFieldTemplate,
5454
});
5555

56-
expect(node.querySelectorAll(".field-array div")).to.have.length.of(6);
56+
expect(node.querySelectorAll(".field-array div")).to.have.length.of(3);
5757
});
5858
});
5959

‎test/ArrayField_test.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ describe("ArrayField", () => {
2424
const { node } = createFormComponent({ schema: { type: "array" } });
2525

2626
expect(
27-
node.querySelector(".field-array > div > div > .unsupported-field")
28-
.textContent
27+
node.querySelector(".field-array > .unsupported-field").textContent
2928
).to.contain("Missing items definition");
3029
});
3130
});

‎test/ObjectField_test.js

+17-9
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ describe("ObjectField", () => {
209209
},
210210
});
211211
const labels = [].map.call(
212-
node.querySelectorAll(".field > div > div > label"),
212+
node.querySelectorAll(".field > label"),
213213
l => l.textContent
214214
);
215215

@@ -224,7 +224,7 @@ describe("ObjectField", () => {
224224
},
225225
});
226226
const labels = [].map.call(
227-
node.querySelectorAll(".field > div > div> label"),
227+
node.querySelectorAll(".field > label"),
228228
l => l.textContent
229229
);
230230

@@ -289,7 +289,7 @@ describe("ObjectField", () => {
289289
},
290290
});
291291
const labels = [].map.call(
292-
node.querySelectorAll(".field > div > div > label"),
292+
node.querySelectorAll(".field > label"),
293293
l => l.textContent
294294
);
295295

@@ -322,7 +322,7 @@ describe("ObjectField", () => {
322322
},
323323
});
324324
const labels = [].map.call(
325-
node.querySelectorAll(".field > div > div > label"),
325+
node.querySelectorAll(".field > label"),
326326
l => l.textContent
327327
);
328328

@@ -720,13 +720,18 @@ describe("ObjectField", () => {
720720
});
721721

722722
expect(
723-
node.querySelector(".form-group > .row > .col-xs-2 .btn-danger")
723+
node.querySelector(
724+
".form-group > .form-additional > .form-additional + .col-xs-2 .btn-danger"
725+
)
724726
).eql(null);
725727

726728
Simulate.click(node.querySelector(".object-property-expand button"));
727729

728-
expect(node.querySelector(".form-group > .row > .col-xs-2 > .btn-danger"))
729-
.to.not.be.null;
730+
expect(
731+
node.querySelector(
732+
".form-group > .row > .form-additional + .col-xs-2 > .btn-danger"
733+
)
734+
).to.not.be.null;
730735
});
731736

732737
it("delete button should delete key-value pair", () => {
@@ -736,7 +741,9 @@ describe("ObjectField", () => {
736741
});
737742
expect(node.querySelector("#root_first-key").value).to.eql("first");
738743
Simulate.click(
739-
node.querySelector(".form-group > .row > .col-xs-2 > .btn-danger")
744+
node.querySelector(
745+
".form-group > .row > .form-additional + .col-xs-2 > .btn-danger"
746+
)
740747
);
741748
expect(node.querySelector("#root_first-key")).to.not.exist;
742749
});
@@ -746,7 +753,8 @@ describe("ObjectField", () => {
746753
schema,
747754
formData: { first: 1, second: 2, third: 3 },
748755
});
749-
const selector = ".form-group > .row > .col-xs-2 > .btn-danger";
756+
const selector =
757+
".form-group > .row > .form-additional + .col-xs-2 > .btn-danger";
750758
expect(node.querySelectorAll(selector).length).to.eql(3);
751759
Simulate.click(node.querySelectorAll(selector)[1]);
752760
expect(node.querySelector("#root_second-key")).to.not.exist;

‎test/SchemaField_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ describe("SchemaField", () => {
313313
submit(node);
314314

315315
const matches = node.querySelectorAll(
316-
"form > .form-group > div > div > div > .error-detail .text-danger"
316+
"form > .form-group > div > .error-detail .text-danger"
317317
);
318318
expect(matches).to.have.length.of(1);
319319
expect(matches[0].textContent).to.eql("container");

0 commit comments

Comments
 (0)
Please sign in to comment.