|
Packit Service |
eebd6f |
import React from "react";
|
|
Packit Service |
eebd6f |
import { defineMessages, FormattedMessage, intlShape, injectIntl } from "react-intl";
|
|
Packit Service |
eebd6f |
import PropTypes from "prop-types";
|
|
Packit Service |
eebd6f |
import { Filter, Toolbar } from "patternfly-react";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const messages = defineMessages({
|
|
Packit Service |
eebd6f |
filterNameTitle: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Name",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
filterReleaseTitle: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Release",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
filterVersionTitle: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Version",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
});
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
class ToolbarLayout extends React.Component {
|
|
Packit Service |
eebd6f |
constructor() {
|
|
Packit Service |
eebd6f |
super();
|
|
Packit Service |
eebd6f |
this.handleRemoveFilter = this.handleRemoveFilter.bind(this);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
handleRemoveFilter(filter) {
|
|
Packit Service |
eebd6f |
this.props.filterRemoveValue(filter);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
render() {
|
|
Packit Service |
eebd6f |
const { filters, children, filterClearValues } = this.props;
|
|
Packit Service |
eebd6f |
const { formatMessage } = this.props.intl;
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const filterItem = (filter) => {
|
|
Packit Service |
eebd6f |
switch (filter.key) {
|
|
Packit Service |
eebd6f |
case "name":
|
|
Packit Service |
eebd6f |
return (
|
|
Packit Service |
eebd6f |
<Filter.Item key={`${filter.key}-${filter.value}`} onRemove={this.handleRemoveFilter} filterData={filter}>
|
|
Packit Service |
eebd6f |
{formatMessage(messages.filterNameTitle)}: {filter.value}
|
|
Packit Service |
eebd6f |
</Filter.Item>
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
case "release":
|
|
Packit Service |
eebd6f |
return (
|
|
Packit Service |
eebd6f |
<Filter.Item key={`${filter.key}-${filter.value}`} onRemove={this.handleRemoveFilter} filterData={filter}>
|
|
Packit Service |
eebd6f |
{formatMessage(messages.filterReleaseTitle)}: {filter.value}
|
|
Packit Service |
eebd6f |
</Filter.Item>
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
case "version":
|
|
Packit Service |
eebd6f |
return (
|
|
Packit Service |
eebd6f |
<Filter.Item key={`${filter.key}-${filter.value}`} onRemove={this.handleRemoveFilter} filterData={filter}>
|
|
Packit Service |
eebd6f |
{formatMessage(messages.filterVersionTitle)}: {filter.value}
|
|
Packit Service |
eebd6f |
</Filter.Item>
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
default:
|
|
Packit Service |
eebd6f |
return null;
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
};
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
return (
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
{children}
|
|
Packit Service |
eebd6f |
{filters.filterValues && filters.filterValues.length !== 0 && (
|
|
Packit Service |
eebd6f |
<Toolbar.Results>
|
|
Packit Service |
eebd6f |
<Filter.ActiveLabel>
|
|
Packit Service |
904037 |
<FormattedMessage defaultMessage="Active filters" />:
|
|
Packit Service |
eebd6f |
</Filter.ActiveLabel>
|
|
Packit Service |
eebd6f |
<Filter.List>{filters.filterValues.map((filter) => filterItem(filter))}</Filter.List>
|
|
Packit Service |
eebd6f |
<button type="button" className="btn-link" onClick={filterClearValues}>
|
|
Packit Service |
904037 |
<FormattedMessage defaultMessage="Clear all filters" />
|
|
Packit Service |
eebd6f |
</button>
|
|
Packit Service |
eebd6f |
</Toolbar.Results>
|
|
Packit Service |
eebd6f |
)}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
ToolbarLayout.propTypes = {
|
|
Packit Service |
eebd6f |
filters: PropTypes.shape({
|
|
Packit Service |
eebd6f |
defaultFilterType: PropTypes.string,
|
|
Packit Service |
eebd6f |
filterTypes: PropTypes.arrayOf(PropTypes.object),
|
|
Packit Service |
eebd6f |
filterValues: PropTypes.arrayOf(PropTypes.object),
|
|
Packit Service |
eebd6f |
}),
|
|
Packit Service |
eebd6f |
filterRemoveValue: PropTypes.func,
|
|
Packit Service |
eebd6f |
filterClearValues: PropTypes.func,
|
|
Packit Service |
eebd6f |
children: PropTypes.node,
|
|
Packit Service |
eebd6f |
intl: intlShape.isRequired,
|
|
Packit Service |
eebd6f |
};
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
ToolbarLayout.defaultProps = {
|
|
Packit Service |
eebd6f |
filters: {},
|
|
Packit Service |
eebd6f |
filterRemoveValue() {},
|
|
Packit Service |
eebd6f |
filterClearValues() {},
|
|
Packit Service |
eebd6f |
children: React.createElement("div"),
|
|
Packit Service |
eebd6f |
};
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
export default injectIntl(ToolbarLayout);
|