Skip to content

Commit 0238b73

Browse files
Merge pull request #96 from webdev-dev/master
Cascading Pane Subview fix
2 parents c16ca3e + 0c86fc6 commit 0238b73

4 files changed

Lines changed: 73 additions & 40 deletions

File tree

lib/CascadingPane/CascadingPane.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,6 @@ CascadingPane.defaultProps = {
258258
getCascadingMainView: function getCascadingMainView(f) {
259259
return f;
260260
},
261-
getCascadingSubView: function getCascadingSubView(f) {
262-
return f;
263-
},
264261
navData: [],
265262
mainData: [],
266263
subData: {},

lib/CascadingPane/CascadingPaneSubView.js

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var CascadingPaneSubView = function (_React$Component) {
5757
cascSelect = _props.cascSelect,
5858
getCascadingSubView = _props.getCascadingSubView;
5959

60-
if (cascSelect) getCascadingSubView(cascSelect);
60+
if (cascSelect && getCascadingSubView) getCascadingSubView(cascSelect);
6161
}
6262
}, {
6363
key: 'componentWillReceiveProps',
@@ -86,11 +86,13 @@ var CascadingPaneSubView = function (_React$Component) {
8686
if (cascSelect) {
8787
if (!nextProps.cascSelect || cascSelect !== nextProps.cascSelect) {
8888
newState.navSelect = nextProps.cascSelect || '';
89-
if (nextProps.cascSelect) getCascadingSubView(nextProps.cascSelect);
89+
if (nextProps.cascSelect && getCascadingSubView) {
90+
getCascadingSubView(nextProps.cascSelect);
91+
}
9092
}
9193
} else if (nextProps.cascSelect) {
9294
newState.navSelect = nextProps.cascSelect;
93-
getCascadingSubView(nextProps.cascSelect);
95+
if (getCascadingSubView) getCascadingSubView(nextProps.cascSelect);
9496
}
9597
if (Object.keys(newState).length > 0) {
9698
this.setState(_extends({}, newState));
@@ -117,25 +119,44 @@ var CascadingPaneSubView = function (_React$Component) {
117119
fetchedMain = _state.fetchedMain;
118120

119121

122+
if (getCascadingSubView) {
123+
return _react2.default.createElement(
124+
'div',
125+
{ className: (0, _classnames2.default)(className, 'cascading-pane-subview'), key: key },
126+
_react2.default.createElement(
127+
_LoadingComponent2.default,
128+
mainViewFetch,
129+
_react2.default.createElement(
130+
_LoadingComponent2.default,
131+
subViewFetch,
132+
fetchedSub && fetchedMain && _react2.default.cloneElement(contentDisplay, {
133+
groupData: groupData,
134+
memberData: memberData,
135+
data: data,
136+
reloadMainView: reloadMainView,
137+
reloadSubView: getCascadingSubView,
138+
navSelect: navSelect,
139+
mainSelect: mainSelect
140+
})
141+
)
142+
)
143+
);
144+
}
145+
120146
return _react2.default.createElement(
121147
'div',
122148
{ className: (0, _classnames2.default)(className, 'cascading-pane-subview'), key: key },
123149
_react2.default.createElement(
124150
_LoadingComponent2.default,
125151
mainViewFetch,
126-
_react2.default.createElement(
127-
_LoadingComponent2.default,
128-
subViewFetch,
129-
fetchedSub && fetchedMain && _react2.default.cloneElement(contentDisplay, {
130-
groupData: groupData,
131-
memberData: memberData,
132-
data: data,
133-
reloadMainView: reloadMainView,
134-
reloadSubView: getCascadingSubView,
135-
navSelect: navSelect,
136-
mainSelect: mainSelect
137-
})
138-
)
152+
fetchedMain && _react2.default.cloneElement(contentDisplay, {
153+
groupData: groupData,
154+
memberData: memberData,
155+
data: data,
156+
reloadMainView: reloadMainView,
157+
navSelect: navSelect,
158+
mainSelect: mainSelect
159+
})
139160
)
140161
);
141162
}
@@ -176,9 +197,6 @@ CascadingPaneSubView.defaultProps = {
176197
groupData: {},
177198
memberData: {},
178199
data: {},
179-
getCascadingSubView: function getCascadingSubView(f) {
180-
return f;
181-
},
182200
subViewFetch: {
183201
status: '',
184202
isFetching: false

src/CascadingPane/CascadingPane.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@ CascadingPane.defaultProps = {
183183
splitClassName: '',
184184
getCascadingNav: f => f,
185185
getCascadingMainView: f => f,
186-
getCascadingSubView: f => f,
187186
navData: [],
188187
mainData: [],
189188
subData: {},

src/CascadingPane/CascadingPaneSubView.jsx

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class CascadingPaneSubView extends React.Component {
1919

2020
componentWillMount() {
2121
const { cascSelect, getCascadingSubView } = this.props;
22-
if (cascSelect) getCascadingSubView(cascSelect);
22+
if (cascSelect && getCascadingSubView) getCascadingSubView(cascSelect);
2323
}
2424

2525
componentWillReceiveProps(nextProps) {
@@ -47,11 +47,13 @@ class CascadingPaneSubView extends React.Component {
4747
if (cascSelect) {
4848
if (!nextProps.cascSelect || cascSelect !== nextProps.cascSelect) {
4949
newState.navSelect = nextProps.cascSelect || '';
50-
if (nextProps.cascSelect) getCascadingSubView(nextProps.cascSelect);
50+
if (nextProps.cascSelect && getCascadingSubView) {
51+
getCascadingSubView(nextProps.cascSelect);
52+
}
5153
}
5254
} else if (nextProps.cascSelect) {
5355
newState.navSelect = nextProps.cascSelect;
54-
getCascadingSubView(nextProps.cascSelect);
56+
if (getCascadingSubView) getCascadingSubView(nextProps.cascSelect);
5557
}
5658
if (Object.keys(newState).length > 0) {
5759
this.setState({ ...newState });
@@ -73,22 +75,40 @@ class CascadingPaneSubView extends React.Component {
7375
} = this.props;
7476
const { navSelect, mainSelect, fetchedSub, fetchedMain } = this.state;
7577

78+
if (getCascadingSubView) {
79+
return (
80+
<div className={classNames(className, 'cascading-pane-subview')} key={key}>
81+
<LoadingComponent {...mainViewFetch}>
82+
<LoadingComponent {...subViewFetch}>
83+
{fetchedSub &&
84+
fetchedMain &&
85+
React.cloneElement(contentDisplay, {
86+
groupData,
87+
memberData,
88+
data,
89+
reloadMainView,
90+
reloadSubView: getCascadingSubView,
91+
navSelect,
92+
mainSelect,
93+
})}
94+
</LoadingComponent>
95+
</LoadingComponent>
96+
</div>
97+
);
98+
}
99+
76100
return (
77101
<div className={classNames(className, 'cascading-pane-subview')} key={key}>
78102
<LoadingComponent {...mainViewFetch}>
79-
<LoadingComponent {...subViewFetch}>
80-
{fetchedSub &&
81-
fetchedMain &&
82-
React.cloneElement(contentDisplay, {
83-
groupData,
84-
memberData,
85-
data,
86-
reloadMainView,
87-
reloadSubView: getCascadingSubView,
88-
navSelect,
89-
mainSelect,
90-
})}
91-
</LoadingComponent>
103+
{fetchedMain &&
104+
React.cloneElement(contentDisplay, {
105+
groupData,
106+
memberData,
107+
data,
108+
reloadMainView,
109+
navSelect,
110+
mainSelect,
111+
})}
92112
</LoadingComponent>
93113
</div>
94114
);
@@ -127,7 +147,6 @@ CascadingPaneSubView.defaultProps = {
127147
groupData: {},
128148
memberData: {},
129149
data: {},
130-
getCascadingSubView: f => f,
131150
subViewFetch: {
132151
status: '',
133152
isFetching: false,

0 commit comments

Comments
 (0)