From d834d6bc742b0d817e6c629f364ee8e351c3cffa Mon Sep 17 00:00:00 2001
From: Paul Rosenzweig <paulrosenzweig@users.noreply.github.com>
Date: Tue, 25 Jun 2019 13:30:36 -0400
Subject: [PATCH] allow LoadingAndErrorWrapper to be empty (#10250)

---
 .../src/metabase/components/LoadingAndErrorWrapper.jsx     | 7 ++++++-
 .../components/LoadingAndErrorWrapper.unit.spec.js         | 4 ++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/frontend/src/metabase/components/LoadingAndErrorWrapper.jsx b/frontend/src/metabase/components/LoadingAndErrorWrapper.jsx
index 23c55716cc3..b2f90f8dfa9 100644
--- a/frontend/src/metabase/components/LoadingAndErrorWrapper.jsx
+++ b/frontend/src/metabase/components/LoadingAndErrorWrapper.jsx
@@ -109,7 +109,12 @@ export default class LoadingAndErrorWrapper extends Component {
     );
 
     if (noWrapper && !error && !loading) {
-      return React.Children.only(this.getChildren());
+      const children = this.getChildren();
+      // special case for loading wrapper with null/undefined child
+      if (children == null) {
+        return null;
+      }
+      return React.Children.only(children);
     }
     return (
       <div className={this.props.className} style={this.props.style}>
diff --git a/frontend/test/metabase/components/LoadingAndErrorWrapper.unit.spec.js b/frontend/test/metabase/components/LoadingAndErrorWrapper.unit.spec.js
index f5b38991500..ada32475f46 100644
--- a/frontend/test/metabase/components/LoadingAndErrorWrapper.unit.spec.js
+++ b/frontend/test/metabase/components/LoadingAndErrorWrapper.unit.spec.js
@@ -22,6 +22,10 @@ describe("LoadingAndErrorWrapper", () => {
       expect(wrapper.find(Child).length).toEqual(1);
     });
 
+    it("shouldn't fail if loaded with null children and no wrapper", () => {
+      mount(<LoadingAndErrorWrapper loading={false} noWrapper />);
+    });
+
     it("should display a given scene during loading", () => {
       const Scene = () => <div>Fun load animation</div>;
 
-- 
GitLab