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

adds listing dropdown component that scrolls to selected listing group

parent 96d79f91
No related branches found
No related tags found
No related merge requests found
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';
...@@ -43,7 +44,7 @@ export default class Listing extends React.Component { ...@@ -43,7 +44,7 @@ export default class Listing extends React.Component {
} }
return ( return (
<ul className="listing__list"> <ul className="listing__list" ref={this.myRef}>
{items.map(v => renderItem(v))} {items.map(v => renderItem(v))}
</ul> </ul>
); );
...@@ -64,7 +65,14 @@ export default class Listing extends React.Component { ...@@ -64,7 +65,14 @@ export default class Listing extends React.Component {
render() { render() {
return ( return (
<div className="listing"> <div className="listing">
<div className="listing__header"></div> <div className="listing__header">
<ListingDropdown
list={this.myRef.current}
error={this.props.isLoading}
items={this.state.orderedItems}
isLoading={this.props.isLoading}
/>
</div>
{this.renderListItems()} {this.renderListItems()}
</div> </div>
); );
......
import React from 'react';
import PropTypes from 'prop-types';
export default class ListingDropdown extends React.Component {
static propTypes = {
list: PropTypes.object,
items: PropTypes.array,
error: PropTypes.string,
isLoading: PropTypes.bool,
}
handleChange(e) {
const groupHeaderPosition = document.getElementById(e.target.value).offsetTop - 75;
this.props.list.scrollTo({
top: groupHeaderPosition
})
}
renderListDropdown() {
const { isLoading, error, items } = this.props;
if (isLoading || error) {
return;
}
return (
<form className="form form__select">
<select onChange={(e) => this.handleChange(e)}>
{items.map(group => {
return (
<option key={`listing-heading-${group.name}`} value={group.name}>{group.name}</option>
)
})}
</select>
</form>
)
}
render() {
return (
<>
{this.renderListDropdown()}
</>
)
}
}
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