diff --git a/packages/strapi-admin/admin/src/translations/en.json b/packages/strapi-admin/admin/src/translations/en.json
index 3e6052e274..de09ffd1db 100755
--- a/packages/strapi-admin/admin/src/translations/en.json
+++ b/packages/strapi-admin/admin/src/translations/en.json
@@ -72,6 +72,8 @@
"components.OverlayBlocker.title": "Waiting for restart...",
"components.OverlayBlocker.description": "You're using a feature that needs the server to restart. Please wait until the server is up.",
+ "components.PageFooter.select": "entries per page",
+
"components.ProductionBlocker.header": "This plugin is only available in development.",
"components.ProductionBlocker.description": "For safety we have to disable this plugin in other environments.",
diff --git a/packages/strapi-admin/admin/src/translations/fr.json b/packages/strapi-admin/admin/src/translations/fr.json
index d8d4a93925..95936ab0fb 100755
--- a/packages/strapi-admin/admin/src/translations/fr.json
+++ b/packages/strapi-admin/admin/src/translations/fr.json
@@ -73,6 +73,8 @@
"components.ErrorBoundary.title": "Une erreur est survenue...",
+ "components.PageFooter.select": "entrées par page",
+
"components.ProductionBlocker.header": "Ce plugin est disponible uniquement en développement.",
"components.ProductionBlocker.description": "Pour des raisons de sécurité il est désactivé dans les autres environnements.",
diff --git a/packages/strapi-helper-plugin/lib/src/components/PageFooter/index.js b/packages/strapi-helper-plugin/lib/src/components/PageFooter/index.js
new file mode 100644
index 0000000000..92e323afb6
--- /dev/null
+++ b/packages/strapi-helper-plugin/lib/src/components/PageFooter/index.js
@@ -0,0 +1,47 @@
+/**
+ *
+ * PageFooter
+ *
+ */
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import cn from 'classnames';
+import { get } from 'lodash';
+import { FormattedMessage } from 'react-intl';
+
+import InputSelect from 'components/InputSelect';
+
+import styles from './styles.scss';
+
+function PageFooter(props) {
+ return (
+
+ );
+}
+
+PageFooter.defaultProps = {};
+
+PageFooter.propTypes = {};
+
+export default PageFooter;
diff --git a/packages/strapi-helper-plugin/lib/src/components/PageFooter/styles.scss b/packages/strapi-helper-plugin/lib/src/components/PageFooter/styles.scss
new file mode 100644
index 0000000000..d36b4464d9
--- /dev/null
+++ b/packages/strapi-helper-plugin/lib/src/components/PageFooter/styles.scss
@@ -0,0 +1,35 @@
+.pageFooter {
+ margin-top: 2.5rem;
+ > div {
+ padding: 0;
+ }
+}
+
+.pageFooterLabel {
+ margin-left: 1rem;
+ padding-top: 3px;
+ color: #787E8F;
+ font-size: 13px;
+ font-style: italic;
+}
+
+.pageFooterSelectWrapper {
+ display: flex;
+
+ > select {
+ width: 75px !important;
+ padding-top: 0rem;
+ padding-left: 1rem;
+ padding-right: 3rem;
+ background-position: right -1px center;
+ background-repeat: no-repeat;
+ background-image: url('../../assets/images/background_input.svg');
+ border: 1px solid #E3E9F3;
+ border-radius: 0.25rem;
+ line-height: 29px;
+ font-size: 1.3rem;
+ font-family: 'Lato' !important;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ }
+}
diff --git a/packages/strapi-plugin-upload/admin/src/components/Li/styles.scss b/packages/strapi-plugin-upload/admin/src/components/Li/styles.scss
index a1e1a5fbd5..22791c7029 100644
--- a/packages/strapi-plugin-upload/admin/src/components/Li/styles.scss
+++ b/packages/strapi-plugin-upload/admin/src/components/Li/styles.scss
@@ -1,4 +1,4 @@
-.liWrapper {
+ .liWrapper {
height: 54px;
background-color: #fff;
padding-top: 5px;
@@ -39,7 +39,10 @@
min-width: 100px;
}
> div:nth-child(7) {
- min-width: 114px;
+ min-width: 147px;
+ }
+ > div:last-child {
+ min-width: 116px;
}
}
diff --git a/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js
index dda96eea17..c6e763b01a 100755
--- a/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js
+++ b/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js
@@ -17,6 +17,7 @@ import { bindActionCreators, compose } from 'redux';
import ContainerFluid from 'components/ContainerFluid';
import InputSearch from 'components/InputSearch';
// import InputSelect from 'components/InputSelect';
+import PageFooter from 'components/PageFooter';
import PluginHeader from 'components/PluginHeader';
// Plugin's component
@@ -30,6 +31,7 @@ import injectSaga from 'utils/injectSaga';
// Actions
import {
+ changeParams,
deleteData,
getData,
onDrop,
@@ -62,6 +64,19 @@ export class HomePage extends React.Component {
}
}
+ handleChangeParams = (e) => {
+ const { history, params } = this.props;
+ const search = e.target.nanme === 'params.limit' ?
+ `page=${params.page}&limit=${e.target.value}&sort=${params.sort}`
+ : `page=${e.target.value}&limit=${params.limit}&sort=${params.sort}`
+ this.props.history.push({
+ pathname: history.pathname,
+ search,
+ });
+
+ this.props.changeParams(e);
+ }
+
renderInputSearch = () =>
+
);
}
@@ -115,16 +136,27 @@ HomePage.childContextTypes = {
deleteData: PropTypes.func.isRequired,
};
-HomePage.defaultProps = {
- uploadedFiles: [{}],
-};
-
HomePage.contextTypes = {
+ params: PropTypes.shape({
+ limit: PropTypes.number,
+ page: PropTypes.number,
+ sort: PropTypes.string,
+ }),
router: PropTypes.object,
uploadedFiles: PropTypes.arrayOf(PropTypes.object),
};
+HomePage.defaultProps = {
+ params: {
+ limit: 10,
+ page: 1,
+ sort: 'updatedAt',
+ },
+ uploadedFiles: [{}],
+};
+
HomePage.propTypes = {
+ changeParams: PropTypes.func.isRequired,
getData: PropTypes.func.isRequired,
onDrop: PropTypes.func.isRequired,
onSearch: PropTypes.func.isRequired,
@@ -134,6 +166,7 @@ HomePage.propTypes = {
function mapDispatchToProps(dispatch) {
return bindActionCreators(
{
+ changeParams,
deleteData,
getData,
onDrop,
diff --git a/packages/strapi-plugin-upload/admin/src/containers/HomePage/reducer.js b/packages/strapi-plugin-upload/admin/src/containers/HomePage/reducer.js
index e5a207f56d..8b7bcdc39d 100755
--- a/packages/strapi-plugin-upload/admin/src/containers/HomePage/reducer.js
+++ b/packages/strapi-plugin-upload/admin/src/containers/HomePage/reducer.js
@@ -30,7 +30,7 @@ const initialState = fromJS({
function homePageReducer(state = initialState, action) {
switch (action.type) {
case CHANGE_PARAMS:
- return state.updateIn(actions.keys, () => action.value);
+ return state.updateIn(action.keys, () => action.value);
case DELETE_SUCCESS:
return state.update('deleteSuccess', (v) => v = !v);
case DROP_SUCCESS: