Skip to content

Commit a0866bb

Browse files
Merge pull request #92 from webdev-dev/master
Cascading Pane Main View Config button
2 parents b4b16d5 + 7713eca commit a0866bb

2 files changed

Lines changed: 57 additions & 24 deletions

File tree

lib/CascadingPane/CascadingPaneMainView.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,13 @@ var CascadingPaneMainView = function (_React$Component) {
194194
summaryDisplay = _props4.summaryDisplay,
195195
reloadNav = _props4.reloadNav,
196196
itemDisplay = _props4.itemDisplay,
197+
itemConfig = _props4.itemConfig,
197198
tableClassName = _props4.tableClassName,
198199
visibilityFilter = _props4.visibilityFilter,
199200
filtersDisplay = _props4.filtersDisplay,
200201
getFilters = _props4.getFilters,
201-
location = _props4.location;
202+
location = _props4.location,
203+
getCascadingMainView = _props4.getCascadingMainView;
202204
var _state = this.state,
203205
navSelect = _state.navSelect,
204206
fetchedNav = _state.fetchedNav,
@@ -207,6 +209,21 @@ var CascadingPaneMainView = function (_React$Component) {
207209
dataWithClass = _state.dataWithClass;
208210

209211

212+
var itemDisplayFormat = itemDisplay || [];
213+
214+
if (itemConfig) {
215+
itemDisplayFormat.push({
216+
name: 'actions',
217+
className: 'td-actions',
218+
display: function display(item) {
219+
return _react2.default.cloneElement(itemConfig, Object.assign({}, { item: item, groupData: groupData }, { reloadData: function reloadData() {
220+
return getCascadingMainView();
221+
} }));
222+
},
223+
excludeRowClick: true
224+
});
225+
}
226+
210227
if (!navSelect) {
211228
return _react2.default.createElement(
212229
'div',
@@ -253,7 +270,7 @@ var CascadingPaneMainView = function (_React$Component) {
253270
searchTerm: visibilityFilter.category.searchTerm || '',
254271
filterList: getFilters(visibilityFilter.category),
255272
data: dataWithClass,
256-
itemFormat: itemDisplay,
273+
itemFormat: itemDisplayFormat,
257274
onSelectionChange: this.onSelectionChange,
258275
onResultsNumUpdate: function onResultsNumUpdate(results) {
259276
return _this2.setState({ showing: results });
@@ -304,6 +321,7 @@ CascadingPaneMainView.propTypes = {
304321
noneSelectedDisplay: _propTypes2.default.element,
305322
summaryDisplay: _propTypes2.default.element,
306323
itemDisplay: _propTypes2.default.array,
324+
itemConfig: _propTypes2.default.element,
307325
itemIdField: _propTypes2.default.string,
308326
getFilters: _propTypes2.default.func,
309327
filtersDisplay: _propTypes2.default.element

src/CascadingPane/CascadingPaneMainView.jsx

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ class CascadingPaneMainView extends React.Component {
2222
? props.mainData.map((item) => {
2323
const newItem = JSON.parse(JSON.stringify(item));
2424
newItem.navId = props.cascNav;
25-
newItem.className = `member-item-${item[props.itemIdField]} ${item[
26-
props.itemIdField
27-
] === props.cascSelect
28-
? 'active'
29-
: ''}`;
25+
newItem.className = `member-item-${item[props.itemIdField]} ${
26+
item[props.itemIdField] === props.cascSelect ? 'active' : ''
27+
}`;
3028
return newItem;
3129
})
3230
: [],
@@ -74,11 +72,9 @@ class CascadingPaneMainView extends React.Component {
7472
? nextProps.mainData.map((item) => {
7573
const newItem = JSON.parse(JSON.stringify(item));
7674
newItem.navId = nextProps.cascNav;
77-
newItem.className = `member-item-${item[nextProps.itemIdField]} ${item[
78-
nextProps.itemIdField
79-
] === nextProps.cascSelect
80-
? 'active'
81-
: ''}`;
75+
newItem.className = `member-item-${item[nextProps.itemIdField]} ${
76+
item[nextProps.itemIdField] === nextProps.cascSelect ? 'active' : ''
77+
}`;
8278
return newItem;
8379
})
8480
: [];
@@ -89,11 +85,9 @@ class CascadingPaneMainView extends React.Component {
8985
? nextProps.mainData.map((item) => {
9086
const newItem = JSON.parse(JSON.stringify(item));
9187
newItem.navId = nextProps.cascNav;
92-
newItem.className = `member-item-${item[nextProps.itemIdField]} ${item[
93-
nextProps.itemIdField
94-
] === nextProps.cascSelect
95-
? 'active'
96-
: ''}`;
88+
newItem.className = `member-item-${item[nextProps.itemIdField]} ${
89+
item[nextProps.itemIdField] === nextProps.cascSelect ? 'active' : ''
90+
}`;
9791
return newItem;
9892
})
9993
: [];
@@ -103,11 +97,9 @@ class CascadingPaneMainView extends React.Component {
10397
? nextProps.mainData.map((item) => {
10498
const newItem = JSON.parse(JSON.stringify(item));
10599
newItem.navId = nextProps.cascNav;
106-
newItem.className = `member-item-${item[nextProps.itemIdField]} ${item[
107-
nextProps.itemIdField
108-
] === nextProps.cascSelect
109-
? 'active'
110-
: ''}`;
100+
newItem.className = `member-item-${item[nextProps.itemIdField]} ${
101+
item[nextProps.itemIdField] === nextProps.cascSelect ? 'active' : ''
102+
}`;
111103
return newItem;
112104
})
113105
: [];
@@ -167,14 +159,35 @@ class CascadingPaneMainView extends React.Component {
167159
summaryDisplay,
168160
reloadNav,
169161
itemDisplay,
162+
itemConfig,
170163
tableClassName,
171164
visibilityFilter,
172165
filtersDisplay,
173166
getFilters,
174167
location,
168+
getCascadingMainView,
175169
} = this.props;
176170
const { navSelect, fetchedNav, fetchedMainView, showing, dataWithClass } = this.state;
177171

172+
const itemDisplayFormat = itemDisplay || [];
173+
174+
if (itemConfig) {
175+
itemDisplayFormat.push({
176+
name: 'actions',
177+
className: 'td-actions',
178+
display: item =>
179+
React.cloneElement(
180+
itemConfig,
181+
Object.assign(
182+
{},
183+
{ item, groupData },
184+
{ reloadData: () => getCascadingMainView() },
185+
),
186+
),
187+
excludeRowClick: true,
188+
});
189+
}
190+
178191
if (!navSelect) {
179192
return (
180193
<div className={classNames(className, 'cascading-pane-mainview')} key={key}>
@@ -212,10 +225,11 @@ class CascadingPaneMainView extends React.Component {
212225
searchTerm={visibilityFilter.category.searchTerm || ''}
213226
filterList={getFilters(visibilityFilter.category)}
214227
data={dataWithClass}
215-
itemFormat={itemDisplay}
228+
itemFormat={itemDisplayFormat}
216229
onSelectionChange={this.onSelectionChange}
217230
onResultsNumUpdate={results =>
218-
this.setState({ showing: results })}
231+
this.setState({ showing: results })
232+
}
219233
rowClickable
220234
onRowClick={item => this.onHandleClick(item)}
221235
selectable
@@ -259,6 +273,7 @@ CascadingPaneMainView.propTypes = {
259273
noneSelectedDisplay: PropTypes.element,
260274
summaryDisplay: PropTypes.element,
261275
itemDisplay: PropTypes.array,
276+
itemConfig: PropTypes.element,
262277
itemIdField: PropTypes.string,
263278
getFilters: PropTypes.func,
264279
filtersDisplay: PropTypes.element,

0 commit comments

Comments
 (0)