diff --git a/frontend/src/components/paginator.js b/frontend/src/components/paginator.js
index a30c60172e..4d74ca651e 100644
--- a/frontend/src/components/paginator.js
+++ b/frontend/src/components/paginator.js
@@ -1,7 +1,9 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
+import className from 'classnames';
import { navigate } from '@gatsbyjs/reach-router';
import { gettext } from '../utils/constants';
+import { DropdownMenu, Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';
import '../css/pagination.css';
@@ -14,10 +16,18 @@ const propTypes = {
curPerPage: PropTypes.number.isRequired
};
+const PAGES = [25, 50, 100];
+
class Paginator extends Component {
- resetPerPage = (e) => {
- const perPage = parseInt(e.target.value);
+ constructor(props) {
+ super(props);
+ this.state = {
+ isMenuShow: false
+ };
+ }
+
+ resetPerPage = (perPage) => {
this.updateURL(1, perPage);
this.props.resetPerPage(perPage);
};
@@ -47,6 +57,24 @@ class Paginator extends Component {
return gettext('{number_placeholder} / Page').replace('{number_placeholder}', perPage);
};
+ toggleOperationMenu = (e) => {
+ e.stopPropagation();
+ this.setState({ isMenuShow: !this.state.isMenuShow });
+ };
+
+ renderDropdownItem = (curPerPage, perPage) => {
+ return (
+ {this.resetPerPage(perPage);}} key={perPage}>
+
+ {curPerPage === perPage && }
+
+
+ {this.getPerPageText(perPage)}
+
+
+ );
+ };
+
render() {
const { curPerPage, currentPage } = this.props;
return (
@@ -67,15 +95,22 @@ class Paginator extends Component {
-
+
+
+ {this.getPerPageText(curPerPage)}
+
+
+
+ {PAGES.map(perPage => {
+ return this.renderDropdownItem(curPerPage, perPage);
+ })}
+
+
);
}
diff --git a/frontend/src/css/pagination.css b/frontend/src/css/pagination.css
index c1e4c84aba..b3943b2277 100644
--- a/frontend/src/css/pagination.css
+++ b/frontend/src/css/pagination.css
@@ -1,3 +1,32 @@
.paginator .btn {
min-width: 2.375rem;
+ font-weight: normal;
+}
+
+.paginator .paginator-dropdown .btn:active,
+.paginator .paginator-dropdown .btn:focus {
+ background-color: #fff;
+ border-color: #1991eb;
+ outline: 0;
+ box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25);
+}
+
+.paginator-dropdown .dropdown-menu {
+ min-width: auto;
+}
+
+.paginator-dropdown>.btn .sf3-font {
+ color: #666;
+}
+
+.paginator-dropdown .dropdown-menu .dropdown-item {
+ display: flex;
+ padding-left: 10px;
+ padding-right: 24px;
+}
+
+.paginator-dropdown .dropdown-menu .dropdown-item .paginator-dropdown-tick {
+ display: inline-block;
+ width: 14px;
+ margin-right: 4px;
}