From 7260bbe309d38c5154a3335250b6d65214ec6def Mon Sep 17 00:00:00 2001 From: soupette Date: Mon, 21 May 2018 17:16:04 +0200 Subject: [PATCH] Add actions to filterpicker --- .../admin/src/components/FilterOptions/Div.js | 1 + .../src/components/FilterOptions/index.js | 2 +- .../components/FiltersPickWrapper/index.js | 83 ++++++++++++------- .../admin/src/containers/ListPage/actions.js | 14 ++++ .../src/containers/ListPage/constants.js | 2 + .../admin/src/containers/ListPage/index.js | 19 +++++ .../admin/src/containers/ListPage/reducer.js | 13 ++- .../admin/src/translations/en.json | 2 + .../admin/src/translations/fr.json | 2 + .../config/layout.json | 7 ++ 10 files changed, 114 insertions(+), 31 deletions(-) diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/Div.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/Div.js index 4bace979e3..b598de5e58 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/Div.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/Div.js @@ -2,6 +2,7 @@ import styled from 'styled-components'; const Div = styled.div` display: flex; + margin-bottom: 6px; `; export default Div; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/index.js index b4664741eb..e2a3a86993 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FilterOptions/index.js @@ -37,7 +37,7 @@ const getInputType = (attrType) => { } }; -const defaultInputStyle = { height: '30px', width: '200px', marginRight: '10px' }; +const defaultInputStyle = { height: '30px', width: '200px', marginRight: '10px', paddingTop: '9px' }; function FilterOptions({ filter, index, onChange, onClickAdd, onClickRemove, schema, showAddButton }) { const selectStyle = { minHeight: '30px', minWidth: '170px', maxWidth: '200px' }; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/FiltersPickWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/FiltersPickWrapper/index.js index d1dd35f64c..50834b3674 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/FiltersPickWrapper/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/FiltersPickWrapper/index.js @@ -38,6 +38,28 @@ class FiltersPickWrapper extends React.PureComponent { } } + generateActions = () => ([ + { + label: 'content-manager.components.FiltersPickWrapper.PluginHeader.actions.clearAll', + kind: 'secondary', + onClick: () => { + return new Promise(resolve => { + this.props.close(); + setTimeout(() => { + this.props.removeAllFilters(); + resolve(); + }, 600); + }); + }, + }, + { + label: 'content-manager.components.FiltersPickWrapper.PluginHeader.actions.apply', + kind: 'primary', + type: 'submit', + onClick: this.props.onSubmit, + }, + ]); + handleChange = ({ target }) => { const split = target.name.split('.'); this.props.onChange(split[0], split[1], target.value); @@ -57,6 +79,7 @@ class FiltersPickWrapper extends React.PureComponent { return new Promise(resolve => { setTimeout(() => { this.props.removeFilter(index); + this.props.onSubmit(); resolve(); }, 600); }); @@ -85,54 +108,56 @@ class FiltersPickWrapper extends React.PureComponent { ); render() { - const { actions, appliedFilters, schema, show } = this.props; + const { appliedFilters, schema, show } = this.props; return ( - -
-
- -
- {appliedFilters.map((filter, key) => ( - - ))} +
+ +
+
+ +
+ {appliedFilters.map((filter, key) => ( + + ))} +
-
-
- +
+ + ); } } FiltersPickWrapper.defaultProps = { - actions: [], appliedFilters: [], modelName: '', schema: {}, }; FiltersPickWrapper.propTypes = { - actions: PropTypes.array, addFilter: PropTypes.func.isRequired, appliedFilters: PropTypes.array, close: PropTypes.func.isRequired, modelName: PropTypes.string, onChange: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + removeAllFilters: PropTypes.func.isRequired, removeFilter: PropTypes.func.isRequired, schema: PropTypes.object, show: PropTypes.bool.isRequired, diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/actions.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/actions.js index c3bb53471b..989c522238 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/actions.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/actions.js @@ -13,8 +13,10 @@ import { GET_DATA_SUCCEEDED, ON_CHANGE, ON_TOGGLE_FILTERS, + REMOVE_ALL_FILTERS, REMOVE_FILTER, SET_PARAMS, + SUBMIT, } from './constants'; export function addFilter(filter) { @@ -78,6 +80,12 @@ export function onToggleFilters() { }; } +export function removeAllFilters() { + return { + type: REMOVE_ALL_FILTERS, + }; +} + export function removeFilter(index) { return { type: REMOVE_FILTER, @@ -91,3 +99,9 @@ export function setParams(params) { params, }; } + +export function submit() { + return { + type: SUBMIT, + }; +} diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/constants.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/constants.js index 065784944d..7573fb6520 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/constants.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/constants.js @@ -13,5 +13,7 @@ export const GET_DATA = 'ContentManager/ListPage/GET_DATA'; export const GET_DATA_SUCCEEDED = 'ContentManager/ListPage/GET_DATA_SUCCEEDED'; export const ON_CHANGE = 'ContentManager/ListPage/ON_CHANGE'; export const ON_TOGGLE_FILTERS = 'ContentManager/ListPage/ON_TOGGLE_FILTERS'; +export const REMOVE_ALL_FILTERS = 'ContentManager/ListPage/REMOVE_ALL_FILTERS'; export const REMOVE_FILTER = 'ContentManager/ListPage/REMOVE_FILTER'; export const SET_PARAMS = 'ContentManager/ListPage/SET_PARAMS'; +export const SUBMIT = 'ContentManager/ListPage/SUBMIT'; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/index.js index cd6ac34dda..3cc1af7c41 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/index.js @@ -41,8 +41,10 @@ import { getData, onChange, onToggleFilters, + removeAllFilters, removeFilter, setParams, + submit, } from './actions'; import reducer from './reducer'; @@ -248,6 +250,16 @@ export class ListPage extends React.Component { this.setState({ showWarning: false }); }; + handleSubmit = e => { + try { + e.preventDefault(); + } catch(err) { + // Silent + } finally { + this.props.submit(); + } + } + toggleModalWarning = e => { if (!isUndefined(e)) { e.preventDefault(); @@ -267,6 +279,7 @@ export class ListPage extends React.Component { listPage: { appliedFilters, params, showFilter }, onChange, onToggleFilters, + removeAllFilters, removeFilter, } = this.props; const pluginHeaderActions = [ @@ -294,6 +307,8 @@ export class ListPage extends React.Component { close={onToggleFilters} modelName={this.getCurrentModelName()} onChange={onChange} + onSubmit={this.handleSubmit} + removeAllFilters={removeAllFilters} removeFilter={removeFilter} schema={this.getCurrentSchema()} show={showFilter} @@ -377,9 +392,11 @@ ListPage.propTypes = { models: PropTypes.object.isRequired, onChange: PropTypes.func.isRequired, onToggleFilters: PropTypes.func.isRequired, + removeAllFilters: PropTypes.func.isRequired, removeFilter: PropTypes.func.isRequired, schema: PropTypes.object.isRequired, setParams: PropTypes.func.isRequired, + submit: PropTypes.func.isRequired, }; function mapDispatchToProps(dispatch) { @@ -391,8 +408,10 @@ function mapDispatchToProps(dispatch) { getData, onChange, onToggleFilters, + removeAllFilters, removeFilter, setParams, + submit, }, dispatch, ); diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/reducer.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/reducer.js index 8cb729f7f3..82084a711c 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/reducer.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/reducer.js @@ -14,13 +14,16 @@ import { GET_DATA_SUCCEEDED, ON_CHANGE, ON_TOGGLE_FILTERS, + REMOVE_ALL_FILTERS, REMOVE_FILTER, SET_PARAMS, + SUBMIT, } from './constants'; const initialState = fromJS({ - count: 0, appliedFilters: List([]), + count: 0, + filters: List([]), params: Map({ _limit: 10, _page: 1, @@ -56,10 +59,18 @@ function listPageReducer(state = initialState, action) { return state.updateIn(['appliedFilters', action.index, action.key], () => action.value); case ON_TOGGLE_FILTERS: return state.update('showFilter', v => !v); + case REMOVE_ALL_FILTERS: + return state + .update('appliedFilters', () => List([])) + .update('filters', () => List([])); case REMOVE_FILTER: return state.update('appliedFilters', list => list.splice(action.index, 1)); case SET_PARAMS: return state.update('params', () => Map(action.params)); + case SUBMIT: + return state + .update('filters', () => state.get('appliedFilters')) + .update('showFilter', () => false); default: return state; } diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/en.json b/packages/strapi-plugin-content-manager/admin/src/translations/en.json index a79482f6fc..899f5ed602 100755 --- a/packages/strapi-plugin-content-manager/admin/src/translations/en.json +++ b/packages/strapi-plugin-content-manager/admin/src/translations/en.json @@ -17,6 +17,8 @@ "components.AddFilterCTA.add": "Add filter", "components.FilterOptions.button.apply": "Apply", + "components.FiltersPickWrapper.PluginHeader.actions.apply": "Apply", + "components.FiltersPickWrapper.PluginHeader.actions.clearAll": "Clear all", "components.FiltersPickWrapper.PluginHeader.description": "Set the conditions to apply to filter the entries", "components.FiltersPickWrapper.PluginHeader.title.filter": "Filters", diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json index 6373fe798b..24baa28077 100755 --- a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json +++ b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json @@ -18,6 +18,8 @@ "components.AddFilterCTA.add": "Ajouter un filtre", "components.FilterOptions.button.apply": "Appliquer", + "components.FiltersPickWrapper.PluginHeader.actions.apply": "Appliquer", + "components.FiltersPickWrapper.PluginHeader.actions.clearAll": "Tout supprimer", "components.FiltersPickWrapper.PluginHeader.description": "Définissez les conditions des filtres à appliquer", "components.FiltersPickWrapper.PluginHeader.title.filter": "Filtres", diff --git a/packages/strapi-plugin-content-manager/config/layout.json b/packages/strapi-plugin-content-manager/config/layout.json index 9f799f5ff5..577169ec35 100644 --- a/packages/strapi-plugin-content-manager/config/layout.json +++ b/packages/strapi-plugin-content-manager/config/layout.json @@ -8,5 +8,12 @@ "appearance": "" } } + }, + "fevzilyaguk": { + "attributes": { + "razeiugeryeizla": { + "appearance": "" + } + } } } \ No newline at end of file