diff --git a/assets/js/src/listing/filters.jsx b/assets/js/src/listing/filters.jsx
index 649658de1b..e1d47c4960 100644
--- a/assets/js/src/listing/filters.jsx
+++ b/assets/js/src/listing/filters.jsx
@@ -1,102 +1,95 @@
-define([
- 'react',
- 'jquery',
- 'mailpoet',
-],
-(
- React,
- jQuery,
- MailPoet
-) => {
- const ListingFilters = React.createClass({
- handleFilterAction: function handleFilterAction() {
- const filters = {};
- this.getAvailableFilters().forEach((filter, i) => {
- filters[this[`filter-${i}`].name] = this[`filter-${i}`].value;
- });
- if (this.props.onBeforeSelectFilter) {
- this.props.onBeforeSelectFilter(filters);
- }
- return this.props.onSelectFilter(filters);
- },
- handleEmptyTrash: function handleEmptyTrash() {
- return this.props.onEmptyTrash();
- },
- getAvailableFilters: function getAvailableFilters() {
- const filters = this.props.filters;
- return Object.keys(filters).filter(filter => !(
- filters[filter].length === 0
- || (
- filters[filter].length === 1
- && !filters[filter][0].value
- )
- ));
- },
- componentDidUpdate: function componentDidUpdate() {
- const selectedFilters = this.props.filter;
- this.getAvailableFilters().forEach(
- (filter, i) => {
- if (selectedFilters[filter] !== undefined && selectedFilters[filter]) {
- jQuery(this[`filter-${i}`])
- .val(selectedFilters[filter])
- .trigger('change');
- }
+import React from 'react';
+import jQuery from 'jquery';
+import MailPoet from 'mailpoet';
+
+const ListingFilters = React.createClass({
+ handleFilterAction: function handleFilterAction() {
+ const filters = {};
+ this.getAvailableFilters().forEach((filter, i) => {
+ filters[this[`filter-${i}`].name] = this[`filter-${i}`].value;
+ });
+ if (this.props.onBeforeSelectFilter) {
+ this.props.onBeforeSelectFilter(filters);
+ }
+ return this.props.onSelectFilter(filters);
+ },
+ handleEmptyTrash: function handleEmptyTrash() {
+ return this.props.onEmptyTrash();
+ },
+ getAvailableFilters: function getAvailableFilters() {
+ const filters = this.props.filters;
+ return Object.keys(filters).filter(filter => !(
+ filters[filter].length === 0
+ || (
+ filters[filter].length === 1
+ && !filters[filter][0].value
+ )
+ ));
+ },
+ componentDidUpdate: function componentDidUpdate() {
+ const selectedFilters = this.props.filter;
+ this.getAvailableFilters().forEach(
+ (filter, i) => {
+ if (selectedFilters[filter] !== undefined && selectedFilters[filter]) {
+ jQuery(this[`filter-${i}`])
+ .val(selectedFilters[filter])
+ .trigger('change');
}
- );
- },
- render: function render() {
- const filters = this.props.filters;
- const availableFilters = this.getAvailableFilters()
- .map((filter, i) => (
-
- ));
-
- let button;
-
- if (availableFilters.length > 0) {
- button = (
-
- );
}
-
- let emptyTrash;
- if (this.props.group === 'trash') {
- emptyTrash = (
-
- );
- }
-
- return (
-
- { availableFilters }
- { button }
- { emptyTrash }
-
);
- },
- });
+ },
+ render: function render() {
+ const filters = this.props.filters;
+ const availableFilters = this.getAvailableFilters()
+ .map((filter, i) => (
+
+ ));
- return ListingFilters;
+ let button;
+
+ if (availableFilters.length > 0) {
+ button = (
+
+ );
+ }
+
+ let emptyTrash;
+ if (this.props.group === 'trash') {
+ emptyTrash = (
+
+ );
+ }
+
+ return (
+
+ { availableFilters }
+ { button }
+ { emptyTrash }
+
+ );
+ },
});
+
+export default ListingFilters;
diff --git a/assets/js/src/listing/groups.jsx b/assets/js/src/listing/groups.jsx
index d7d25ff634..2db70034dc 100644
--- a/assets/js/src/listing/groups.jsx
+++ b/assets/js/src/listing/groups.jsx
@@ -1,41 +1,60 @@
-define(['react', 'classnames'], (React, classNames) => {
- const ListingGroups = React.createClass({
- handleSelect: function handleSelect(group) {
- return this.props.onSelectGroup(group);
- },
- render: function render() {
- const groups = this.props.groups.map((group, index) => {
- if (group.name === 'trash' && group.count === 0) {
- return false;
- }
+import React from 'react';
+import classNames from 'classnames';
+import PropTypes from 'prop-types';
- const classes = classNames(
- { current: (group.name === this.props.group) }
- );
+class ListingGroups extends React.Component {
+ constructor(props) {
+ super(props);
+ this.handleSelect = this.handleSelect.bind(this);
+ }
- return (
-
- {(index > 0) ? ' |' : ''}
-
- {group.label}
- ({ parseInt(group.count, 10).toLocaleString() })
-
-
+ handleSelect(group) {
+ return this.props.onSelectGroup(group);
+ }
+
+ render() {
+ const groups = this.props.groups.map((group, index) => {
+ if (group.name === 'trash' && group.count === 0) {
+ return false;
+ }
+
+ const classes = classNames(
+ { current: (group.name === this.props.group) }
);
- });
return (
-
+
+ {(index > 0) ? ' |' : ''}
+ this.handleSelect(group.name)}
+ >
+ {group.label}
+ ({ parseInt(group.count, 10).toLocaleString() })
+
+
);
- },
- });
+ });
- return ListingGroups;
+ return (
+
+ );
+ }
}
-);
+
+ListingGroups.propTypes = {
+ onSelectGroup: PropTypes.func.isRequired,
+ groups: PropTypes.arrayOf(PropTypes.shape({
+ name: PropTypes.string,
+ count: PropTypes.number,
+ })).isRequired,
+ group: PropTypes.shape({
+ name: PropTypes.string,
+ count: PropTypes.number,
+ }).isRequired,
+};
+
+export default ListingGroups;
diff --git a/assets/js/src/listing/header.jsx b/assets/js/src/listing/header.jsx
index 032371bfd0..13c1272b3b 100644
--- a/assets/js/src/listing/header.jsx
+++ b/assets/js/src/listing/header.jsx
@@ -19,7 +19,7 @@ const ListingHeader = React.createClass({
);