Skip to content
Snippets Groups Projects
Commit 7f5fca2e authored by Chris Lawton's avatar Chris Lawton Committed by Todd Dembrey
Browse files

move listing dropdown in to grouped listing

parent b4a3046d
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,9 @@ import PropTypes from 'prop-types'; ...@@ -4,6 +4,9 @@ import PropTypes from 'prop-types';
import Listing from '@components/Listing'; import Listing from '@components/Listing';
import ListingGroup from '@components/ListingGroup'; import ListingGroup from '@components/ListingGroup';
import ListingItem from '@components/ListingItem'; import ListingItem from '@components/ListingItem';
import ListingDropdown from '@components/ListingDropdown';
// add styles from listing header
export default class GroupedListing extends React.Component { export default class GroupedListing extends React.Component {
static propTypes = { static propTypes = {
...@@ -26,6 +29,11 @@ export default class GroupedListing extends React.Component { ...@@ -26,6 +29,11 @@ export default class GroupedListing extends React.Component {
orderedItems: [], orderedItems: [],
}; };
constructor(props) {
super(props);
this.listRef = React.createRef();
}
componentDidMount() { componentDidMount() {
this.orderItems(); this.orderItems();
} }
...@@ -79,7 +87,7 @@ export default class GroupedListing extends React.Component { ...@@ -79,7 +87,7 @@ export default class GroupedListing extends React.Component {
renderItem = group => { renderItem = group => {
const { activeItem, onItemSelection } = this.props; const { activeItem, onItemSelection } = this.props;
return ( return (
<ListingGroup key={`listing-group-${group.name}`} item={group}> <ListingGroup key={`listing-group-${group.name}`} item={group} ref={this.listRef}>
{group.items.map(item => { {group.items.map(item => {
return <ListingItem return <ListingItem
selected={!!activeItem && activeItem===item.id} selected={!!activeItem && activeItem===item.id}
...@@ -92,13 +100,31 @@ export default class GroupedListing extends React.Component { ...@@ -92,13 +100,31 @@ export default class GroupedListing extends React.Component {
} }
render() { render() {
const { isLoading, error } = this.props;
const isError = Boolean(error);
const passProps = { const passProps = {
items: this.state.orderedItems, items: this.state.orderedItems,
renderItem: this.renderItem, renderItem: this.renderItem,
isLoading: this.props.isLoading, isLoading,
isError: Boolean(this.error), isError,
error: this.error, error
}; };
return <Listing {...passProps} />;
return (
<div className="grouped-listing">
<div className="grouped-listing__dropdown">
{!error && !isLoading &&
<ListingDropdown
list={this.listRef.current}
error={this.props.isLoading}
items={this.state.orderedItems}
isLoading={this.props.isLoading}
/>
}
</div>
<Listing {...passProps} />
</div>
);
} }
} }
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ListingDropdown from '@components/ListingDropdown';
import LoadingPanel from '@components/LoadingPanel'; import LoadingPanel from '@components/LoadingPanel';
import './style.scss'; import './style.scss';
...@@ -19,11 +18,6 @@ export default class Listing extends React.Component { ...@@ -19,11 +18,6 @@ export default class Listing extends React.Component {
handleRetry: PropTypes.func, handleRetry: PropTypes.func,
}; };
constructor(props) {
super(props);
this.listRef = React.createRef();
}
renderListItems() { renderListItems() {
const { const {
isError, isError,
...@@ -49,7 +43,7 @@ export default class Listing extends React.Component { ...@@ -49,7 +43,7 @@ export default class Listing extends React.Component {
} }
return ( return (
<ul className="listing__list" ref={this.listRef}> <ul className="listing__list">
{items.map(v => renderItem(v))} {items.map(v => renderItem(v))}
</ul> </ul>
); );
...@@ -70,14 +64,6 @@ export default class Listing extends React.Component { ...@@ -70,14 +64,6 @@ export default class Listing extends React.Component {
render() { render() {
return ( return (
<div className="listing"> <div className="listing">
<div className="listing__header">
<ListingDropdown
list={this.listRef.current}
error={this.props.isLoading}
items={this.props.items}
isLoading={this.props.isLoading}
/>
</div>
{this.renderListItems()} {this.renderListItems()}
</div> </div>
); );
......
...@@ -5,8 +5,6 @@ export default class ListingDropdown extends React.Component { ...@@ -5,8 +5,6 @@ export default class ListingDropdown extends React.Component {
static propTypes = { static propTypes = {
list: PropTypes.object, list: PropTypes.object,
items: PropTypes.array, items: PropTypes.array,
error: PropTypes.string,
isLoading: PropTypes.bool,
} }
handleChange(e) { handleChange(e) {
...@@ -18,11 +16,7 @@ export default class ListingDropdown extends React.Component { ...@@ -18,11 +16,7 @@ export default class ListingDropdown extends React.Component {
} }
renderListDropdown() { renderListDropdown() {
const { isLoading, error, items } = this.props; const { items } = this.props;
if (isLoading || error) {
return;
}
return ( return (
<form className="form form__select"> <form className="form form__select">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment