diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/actions.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/actions.js index 5f87b32260..53fe721d60 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/containers/App/actions.js +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/actions.js @@ -5,6 +5,20 @@ */ import { - LOAD_DATA, - DATA_LOADED, + MENU_FETCH, + MENU_FETCH_SUCCEEDED, } from './constants'; + + +export function menuFetch() { + return { + type: MENU_FETCH, + }; +} + +export function fetchMenuSucceeded(menu) { + return { + type: MENU_FETCH_SUCCEEDED, + menu, + }; +} diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/constants.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/constants.js index 8df60a1d58..7dd0fdbe37 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/containers/App/constants.js +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/constants.js @@ -4,5 +4,5 @@ * */ -export const LOAD_DATA = 'SettingsManager/App/LOAD_DATA'; -export const DATA_LOADED = 'SettingsManager/App/DATA_LOADED'; +export const MENU_FETCH = 'SettingsManager/App/MENU_FETCH'; +export const MENU_FETCH_SUCCEEDED = 'SettingsManager/App/MENU_FETCH_SUCCEEDED'; diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/index.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/index.js index bf953df7fe..7087a33bd8 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/containers/App/index.js +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/index.js @@ -8,8 +8,12 @@ import React from 'react'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; +import { bindActionCreators } from 'redux'; import { pluginId } from 'app'; import PluginLeftMenu from 'components/PluginLeftMenu'; + +import { menuFetch } from './actions'; +import selectGlobalDomain from './selectors'; import styles from './styles.scss'; class App extends React.Component { @@ -22,6 +26,10 @@ class App extends React.Component { } } + componentDidMount() { + this.props.menuFetch(); + } + handleChange = ({ target }) => { this.setState({ value: target.value}); } @@ -33,6 +41,7 @@ class App extends React.Component { exposedComponents: this.props.exposedComponents, }) ); + console.log(this.props.app) return (
@@ -57,12 +66,17 @@ App.propTypes = { }; export function mapDispatchToProps(dispatch) { - return { - dispatch, - }; + return bindActionCreators( + { + menuFetch, + }, + dispatch + ); } -const mapStateToProps = createStructuredSelector({}); +const mapStateToProps = createStructuredSelector({ + app: selectGlobalDomain(), +}); // Wrap the component to inject dispatch and state into it export default connect(mapStateToProps, mapDispatchToProps)(App); diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/reducer.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/reducer.js index 38026c39cd..01d81d2fe5 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/containers/App/reducer.js +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/reducer.js @@ -4,12 +4,19 @@ * */ -import { fromJS } from 'immutable'; +import { fromJS, List } from 'immutable'; +import { + MENU_FETCH_SUCCEEDED, +} from './constants'; -const initialState = fromJS({}); +const initialState = fromJS({ + sections: List() +}); function appReducer(state = initialState, action) { switch (action.type) { + case MENU_FETCH_SUCCEEDED: + return state.set('menuSections', action.menu.sections); default: return state; } diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/sagas.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/sagas.js new file mode 100644 index 0000000000..45e3ca5c5c --- /dev/null +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/sagas.js @@ -0,0 +1,30 @@ +import { takeLatest } from 'redux-saga'; +import { LOCATION_CHANGE } from 'react-router-redux'; +import { put, fork } from 'redux-saga/effects'; + +import { fetchMenuSucceeded } from './actions'; +import { MENU_FETCH } from './constants'; + +export function* fetchMenu() { + try { + const opts = { + method: 'GET', + }; + const response = yield fetch('/settings-manager/menu', opts); + const data = yield response.json(); + + yield put(fetchMenuSucceeded(data)); + + } catch(err) { + window.Strapi.notification.error( + 'An error occurred.' + ); + } +} + + +function* defaultSaga() { + yield fork(takeLatest, MENU_FETCH, fetchMenu); +} + +export default [defaultSaga]; diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/selectors.js b/packages/strapi-plugin-setings-manager/admin/src/containers/App/selectors.js index b3654897ca..d65351b535 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/containers/App/selectors.js +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/selectors.js @@ -1,10 +1,10 @@ -// import { createSelector } from 'reselect'; +import { createSelector } from 'reselect'; /** * Direct selector to the list state domain */ -// const selectGlobalDomain = () => state => state.get('global'); +const selectGlobalDomain = () => state => state.get('global'); const selectLocationState = () => { let prevRoutingState; @@ -23,3 +23,4 @@ const selectLocationState = () => { }; export { selectLocationState }; +export default selectGlobalDomain; diff --git a/packages/strapi-plugin-setings-manager/admin/src/containers/App/styles.scss b/packages/strapi-plugin-setings-manager/admin/src/containers/App/styles.scss new file mode 100644 index 0000000000..ea67d5f306 --- /dev/null +++ b/packages/strapi-plugin-setings-manager/admin/src/containers/App/styles.scss @@ -0,0 +1,17 @@ +.app { /* stylelint-disable */ + min-height: calc(100vh - 6rem); // TODO should be variable + background: rgba(14,22,34,0.02); +} +.baseline { + // display: none; + z-index: 100001; + opacity: .2; + position: absolute; + top:0; left:0; + width: 100%; + height: 500%; + min-height: 100%; + background: url('../../assets/images/baseline-18.png'); + // background: url('../../assets/images/baseline-20.png'); + pointer-events: none; +}