From 58af3a6ba4f57a792e56e79acb8b9c1c4c8c8841 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Tue, 27 Jun 2017 21:55:41 +0800 Subject: [web] Add js/ducks/ui/modal.js --- web/src/js/ducks/ui/modal.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 web/src/js/ducks/ui/modal.js diff --git a/web/src/js/ducks/ui/modal.js b/web/src/js/ducks/ui/modal.js new file mode 100644 index 00000000..aafddaf7 --- /dev/null +++ b/web/src/js/ducks/ui/modal.js @@ -0,0 +1,33 @@ +export const HIDE_MODAL = 'UI_HIDE_MODAL' +export const SET_ACTIVE_MODAL = 'UI_SET_ACTIVE_MODAL' + +const defaultState = { + activeModal: undefined, +} + +export default function reducer(state = defaultState, action){ + switch (action.type){ + + case SET_ACTIVE_MODAL: + return { + ...state, + activeModal: action.activeModal, + } + + case HIDE_MODAL: + return { + ...state, + activeModal: undefined + } + default: + return state + } +} + +export function setActiveModal(activeModal) { + return { type: SET_ACTIVE_MODAL, activeModal } +} + +export function hideModal(){ + return { type: HIDE_MODAL } +} -- cgit v1.2.3 From f95dcfd2e5824a4ec0844006cfb54c66bfff70b0 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Tue, 27 Jun 2017 21:58:41 +0800 Subject: [web] Add js/ducks/options.js --- web/src/js/ducks/options.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 web/src/js/ducks/options.js diff --git a/web/src/js/ducks/options.js b/web/src/js/ducks/options.js new file mode 100644 index 00000000..39c2f3fc --- /dev/null +++ b/web/src/js/ducks/options.js @@ -0,0 +1,32 @@ +import { fetchApi } from '../utils' + +export const RECEIVE = 'OPTIONS_RECEIVE' +export const UPDATE = 'OPTIONS_UPDATE' +export const REQUEST_UPDATE = 'REQUEST_UPDATE' +export const UNKNOWN_CMD = 'OPTIONS_UNKNOWN_CMD' + +const defaultState = { + +} + +export default function reducer(state = defaultState, action) { + switch (action.type) { + + case RECEIVE: + return action.data + + case UPDATE: + return { + ...state, + ...action.data, + } + + default: + return state + } +} + +export function update(options) { + fetchApi.put('/options', options) + return { type: REQUEST_UPDATE } +} -- cgit v1.2.3 From 23a2409a87640c048cb8c9ed297b03c0f9425a37 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Tue, 27 Jun 2017 22:00:10 +0800 Subject: [web] Add modal to js/ducks/ui/index.js --- web/src/js/ducks/ui/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/src/js/ducks/ui/index.js b/web/src/js/ducks/ui/index.js index 1d989eb1..741671b2 100644 --- a/web/src/js/ducks/ui/index.js +++ b/web/src/js/ducks/ui/index.js @@ -1,9 +1,11 @@ import { combineReducers } from 'redux' import flow from './flow' import header from './header' +import modal from './modal' // TODO: Just move ducks/ui/* into ducks/? export default combineReducers({ flow, header, + modal }) -- cgit v1.2.3 From c0ad25715bc050dac0134ccd46f25884396d0f87 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 18:48:31 +0800 Subject: [web] Add Modal Component and OptionModal --- web/src/js/components/Modal/Modal.jsx | 33 +++++++++++++++++++++++++++++ web/src/js/components/Modal/ModalList.jsx | 3 +++ web/src/js/components/Modal/OptionModal.jsx | 33 +++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 web/src/js/components/Modal/Modal.jsx create mode 100644 web/src/js/components/Modal/ModalList.jsx create mode 100644 web/src/js/components/Modal/OptionModal.jsx diff --git a/web/src/js/components/Modal/Modal.jsx b/web/src/js/components/Modal/Modal.jsx new file mode 100644 index 00000000..3370ad36 --- /dev/null +++ b/web/src/js/components/Modal/Modal.jsx @@ -0,0 +1,33 @@ +import React, { Component } from 'react' +import { connect } from 'react-redux' +import * as modalAction from '../../ducks/ui/modal' +import ModalList from './ModalList' + +class PureModal extends Component { + + constructor(props, context) { + super(props, context) + } + + render() { + const { activeModal, hideModal } = this.props + const ActiveModal = _.find(ModalList, m => m.name === activeModal ) + return( + activeModal ? +
+
+ +
+ :
+ ) + } +} + +export default connect( + state => ({ + activeModal: state.ui.modal.activeModal + }), + { + hideModal: modalAction.hideModal + } +)(PureModal) diff --git a/web/src/js/components/Modal/ModalList.jsx b/web/src/js/components/Modal/ModalList.jsx new file mode 100644 index 00000000..41b36f00 --- /dev/null +++ b/web/src/js/components/Modal/ModalList.jsx @@ -0,0 +1,3 @@ +import OptionModal from './OptionModal' + +export default [ OptionModal, EmptyModal ] diff --git a/web/src/js/components/Modal/OptionModal.jsx b/web/src/js/components/Modal/OptionModal.jsx new file mode 100644 index 00000000..d9e8b829 --- /dev/null +++ b/web/src/js/components/Modal/OptionModal.jsx @@ -0,0 +1,33 @@ +import React from 'react' +import PropTypes from 'prop-types' + +OptionModal.prototype = { + hideModal: PropTypes.function, +} + +export default function OptionModal( { hideModal }) { + const title = 'Options' + return ( + + ) +} -- cgit v1.2.3 From 2a9b2a549ab3ca012f98b7a069ca14442ee6a1e8 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 18:49:11 +0800 Subject: [web] Add Option Modal to FileMenu. --- web/src/js/components/Header/FileMenu.jsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/web/src/js/components/Header/FileMenu.jsx b/web/src/js/components/Header/FileMenu.jsx index 70fbb2c3..82855c43 100644 --- a/web/src/js/components/Header/FileMenu.jsx +++ b/web/src/js/components/Header/FileMenu.jsx @@ -4,11 +4,13 @@ import { connect } from 'react-redux' import FileChooser from '../common/FileChooser' import Dropdown, {Divider} from '../common/Dropdown' import * as flowsActions from '../../ducks/flows' +import * as modalActions from '../../ducks/ui/modal' FileMenu.propTypes = { clearFlows: PropTypes.func.isRequired, loadFlows: PropTypes.func.isRequired, - saveFlows: PropTypes.func.isRequired + saveFlows: PropTypes.func.isRequired, + openModal: PropTypes.func.isRequired, } FileMenu.onNewClick = (e, clearFlows) => { @@ -17,7 +19,7 @@ FileMenu.onNewClick = (e, clearFlows) => { clearFlows() } -export function FileMenu ({clearFlows, loadFlows, saveFlows}) { +export function FileMenu ({clearFlows, loadFlows, saveFlows, openModal}) { return ( FileMenu.onNewClick(e, clearFlows)}> @@ -34,6 +36,11 @@ export function FileMenu ({clearFlows, loadFlows, saveFlows}) {  Save... + { openModal('OptionModal') }}> + +  Options + + @@ -50,5 +57,6 @@ export default connect( clearFlows: flowsActions.clear, loadFlows: flowsActions.upload, saveFlows: flowsActions.download, + openModal: modalActions.setActiveModal, } )(FileMenu) -- cgit v1.2.3 From 81c854e9097b9d8990899b41a1ac8f7050182763 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 18:50:08 +0800 Subject: [web] Update test for js/components/Header/FileMenu.jsx --- web/src/js/__tests__/components/Header/FileMenuSpec.js | 15 ++++++++++++++- .../components/Header/__snapshots__/FileMenuSpec.js.snap | 13 +++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/web/src/js/__tests__/components/Header/FileMenuSpec.js b/web/src/js/__tests__/components/Header/FileMenuSpec.js index 65b4647a..0d87530b 100644 --- a/web/src/js/__tests__/components/Header/FileMenuSpec.js +++ b/web/src/js/__tests__/components/Header/FileMenuSpec.js @@ -8,13 +8,20 @@ describe('FileMenu Component', () => { let clearFn = jest.fn(), loadFn = jest.fn(), saveFn = jest.fn(), + openModalFn = jest.fn(), mockEvent = { preventDefault: jest.fn(), target: { files: ["foo", "bar "] } }, createNodeMock = () => { return { click: jest.fn() }}, fileMenu = renderer.create( - , { createNodeMock }), + , + { createNodeMock }), tree = fileMenu.toJSON() it('should render correctly', () => { @@ -42,4 +49,10 @@ describe('FileMenu Component', () => { a.props.onClick(mockEvent) expect(saveFn).toBeCalled() }) + + it('should open optionModal', () => { + let a = ul.children[3].children[1] + a.props.onClick(mockEvent) + expect(openModalFn).toBeCalled() + }) }) diff --git a/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap b/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap index 13ecf3f5..15c1afbc 100644 --- a/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap +++ b/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap @@ -60,6 +60,19 @@ exports[`FileMenu Component should render correctly 1`] = `  Save... + +
  • + + + +  Options + +
  • -- cgit v1.2.3 From febfeb9ef2bd9c412590c489e12f393f183b9a82 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 21:48:22 +0800 Subject: [web] Minor update for Modal Component. --- web/src/js/components/Header/FileMenu.jsx | 4 ++-- web/src/js/components/Modal/Modal.jsx | 2 +- web/src/js/components/Modal/ModalList.jsx | 2 +- web/src/js/components/ProxyApp.jsx | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/web/src/js/components/Header/FileMenu.jsx b/web/src/js/components/Header/FileMenu.jsx index 82855c43..62f721cf 100644 --- a/web/src/js/components/Header/FileMenu.jsx +++ b/web/src/js/components/Header/FileMenu.jsx @@ -36,7 +36,7 @@ export function FileMenu ({clearFlows, loadFlows, saveFlows, openModal}) {  Save... - { openModal('OptionModal') }}> + { e.preventDefault(); openModal(); }}>  Options @@ -57,6 +57,6 @@ export default connect( clearFlows: flowsActions.clear, loadFlows: flowsActions.upload, saveFlows: flowsActions.download, - openModal: modalActions.setActiveModal, + openModal: () => modalActions.setActiveModal('OptionModal'), } )(FileMenu) diff --git a/web/src/js/components/Modal/Modal.jsx b/web/src/js/components/Modal/Modal.jsx index 3370ad36..e39f5415 100644 --- a/web/src/js/components/Modal/Modal.jsx +++ b/web/src/js/components/Modal/Modal.jsx @@ -11,7 +11,7 @@ class PureModal extends Component { render() { const { activeModal, hideModal } = this.props - const ActiveModal = _.find(ModalList, m => m.name === activeModal ) + const ActiveModal = ModalList.find(m => m.name === activeModal ) return( activeModal ?
    diff --git a/web/src/js/components/Modal/ModalList.jsx b/web/src/js/components/Modal/ModalList.jsx index 41b36f00..8ba46b00 100644 --- a/web/src/js/components/Modal/ModalList.jsx +++ b/web/src/js/components/Modal/ModalList.jsx @@ -1,3 +1,3 @@ import OptionModal from './OptionModal' -export default [ OptionModal, EmptyModal ] +export default [ OptionModal ] diff --git a/web/src/js/components/ProxyApp.jsx b/web/src/js/components/ProxyApp.jsx index af5b3caa..8c3970bc 100644 --- a/web/src/js/components/ProxyApp.jsx +++ b/web/src/js/components/ProxyApp.jsx @@ -7,6 +7,7 @@ import MainView from './MainView' import Header from './Header' import EventLog from './EventLog' import Footer from './Footer' +import Modal from './Modal/Modal' class ProxyAppMain extends Component { @@ -28,6 +29,7 @@ class ProxyAppMain extends Component { )}
    +
    ) } -- cgit v1.2.3 From 4e8b8bf2ceb7d31a3fc24a62caa0341105fcebe5 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 21:48:49 +0800 Subject: [web] Add src/css/modal.less --- web/src/css/modal.less | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 web/src/css/modal.less diff --git a/web/src/css/modal.less b/web/src/css/modal.less new file mode 100644 index 00000000..b08e309a --- /dev/null +++ b/web/src/css/modal.less @@ -0,0 +1,3 @@ +.modal-visible { + display: block; +} -- cgit v1.2.3 From 7784d7cdd0caa5a118e29f58eadbe508184c88e7 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Wed, 28 Jun 2017 22:08:30 +0800 Subject: [web] Add tests for reducors of options and modal. --- web/src/js/__tests__/ducks/optionsSpec.js | 25 +++++++++++++++++++++++++ web/src/js/__tests__/ducks/ui/modalSpec.js | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 web/src/js/__tests__/ducks/optionsSpec.js create mode 100644 web/src/js/__tests__/ducks/ui/modalSpec.js diff --git a/web/src/js/__tests__/ducks/optionsSpec.js b/web/src/js/__tests__/ducks/optionsSpec.js new file mode 100644 index 00000000..62019715 --- /dev/null +++ b/web/src/js/__tests__/ducks/optionsSpec.js @@ -0,0 +1,25 @@ +jest.mock('../../utils') + +import reduceOptions, * as OptionsActions from '../../ducks/options' + +describe('option reducer', () => { + it('should return initial state', () => { + expect(reduceOptions(undefined, {})).toEqual({}) + }) + + it('should handle receive action', () => { + let action = { type: OptionsActions.RECEIVE, data: 'foo' } + expect(reduceOptions(undefined, action)).toEqual('foo') + }) + + it('should handle update action', () => { + let action = {type: OptionsActions.UPDATE, data: {id: 1} } + expect(reduceOptions(undefined, action)).toEqual({id: 1}) + }) +}) + +describe('option actions', () => { + it('should be possible to update option', () => { + expect(reduceOptions(undefined, OptionsActions.update())).toEqual({}) + }) +}) diff --git a/web/src/js/__tests__/ducks/ui/modalSpec.js b/web/src/js/__tests__/ducks/ui/modalSpec.js new file mode 100644 index 00000000..30c39760 --- /dev/null +++ b/web/src/js/__tests__/ducks/ui/modalSpec.js @@ -0,0 +1,25 @@ +import reduceModal, * as ModalActions from '../../../ducks/ui/modal' + +describe('modal reducer', () => { + let state = undefined + + it('should return the initial state', () => { + expect(reduceModal(undefined, {})).toEqual( + { activeModal: undefined } + ) + }) + + it('should handle setActiveModal action', () => { + state = reduceModal(undefined, ModalActions.setActiveModal('foo')) + expect(state).toEqual( + { activeModal: 'foo' } + ) + }) + + it('should handle hideModal action', () => { + state = reduceModal(state, ModalActions.hideModal()) + expect(state).toEqual( + { activeModal: undefined } + ) + }) +}) -- cgit v1.2.3 From daec9854e2eb81eb846ad1a7c1080936e31f38d7 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Thu, 29 Jun 2017 09:06:55 +0800 Subject: [web] Update __tests__/ducks/tutils.js --- web/src/js/__tests__/ducks/tutils.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/src/js/__tests__/ducks/tutils.js b/web/src/js/__tests__/ducks/tutils.js index 2a79ede0..9b92e676 100644 --- a/web/src/js/__tests__/ducks/tutils.js +++ b/web/src/js/__tests__/ducks/tutils.js @@ -32,6 +32,9 @@ export function TStore(){ }, header: { tab: 'Start' + }, + modal: { + activeModal: undefined } }, settings: { @@ -47,7 +50,8 @@ export function TStore(){ sort: { desc: true, column: 'PathColumn' - } + }, + view: [ tflow ] }, connection: { state: ConnectionState.ESTABLISHED -- cgit v1.2.3 From 7a50301af322667faff8adc1d5990957df9dc4bb Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Thu, 29 Jun 2017 09:20:11 +0800 Subject: [web] Add tests for js/components/Modal/ModalSpec.js --- web/src/js/__tests__/components/Modal/ModalSpec.js | 30 +++++++++++ .../Modal/__snapshots__/ModalSpec.js.snap | 62 ++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 web/src/js/__tests__/components/Modal/ModalSpec.js create mode 100644 web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap diff --git a/web/src/js/__tests__/components/Modal/ModalSpec.js b/web/src/js/__tests__/components/Modal/ModalSpec.js new file mode 100644 index 00000000..e4880d08 --- /dev/null +++ b/web/src/js/__tests__/components/Modal/ModalSpec.js @@ -0,0 +1,30 @@ +import React from 'react' +import renderer from 'react-test-renderer' +import Modal from '../../../components/Modal/Modal' +import { Provider } from 'react-redux' +import { TStore } from '../../ducks/tutils' + +describe('Modal Component', () => { + let store = TStore() + + it('should render correctly', () => { + // hide modal by default + let provider = renderer.create( + + + + ), + tree = provider.toJSON() + expect(tree).toMatchSnapshot() + + // option modal show up + store.getState().ui.modal.activeModal = 'OptionModal' + provider = renderer.create( + + + + ) + tree = provider.toJSON() + expect(tree).toMatchSnapshot() + }) +}) diff --git a/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap new file mode 100644 index 00000000..f25c3330 --- /dev/null +++ b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap @@ -0,0 +1,62 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Modal Component should render correctly 1`] = `
    `; + +exports[`Modal Component should render correctly 2`] = ` +
    +
    + +`; -- cgit v1.2.3 From 7baf3069b169e8196e5d389e655a3a187b4329d9 Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Fri, 30 Jun 2017 20:46:02 +0800 Subject: [web] Update the Structure of Modal component. --- web/src/js/components/Modal/Modal.jsx | 15 +++---------- web/src/js/components/Modal/ModalLayout.jsx | 16 ++++++++++++++ web/src/js/components/Modal/ModalList.jsx | 12 ++++++++++- web/src/js/components/Modal/OptionModal.jsx | 33 ----------------------------- 4 files changed, 30 insertions(+), 46 deletions(-) create mode 100644 web/src/js/components/Modal/ModalLayout.jsx delete mode 100644 web/src/js/components/Modal/OptionModal.jsx diff --git a/web/src/js/components/Modal/Modal.jsx b/web/src/js/components/Modal/Modal.jsx index e39f5415..88e81156 100644 --- a/web/src/js/components/Modal/Modal.jsx +++ b/web/src/js/components/Modal/Modal.jsx @@ -1,6 +1,5 @@ import React, { Component } from 'react' import { connect } from 'react-redux' -import * as modalAction from '../../ducks/ui/modal' import ModalList from './ModalList' class PureModal extends Component { @@ -10,15 +9,10 @@ class PureModal extends Component { } render() { - const { activeModal, hideModal } = this.props + const { activeModal } = this.props const ActiveModal = ModalList.find(m => m.name === activeModal ) return( - activeModal ? -
    -
    - -
    - :
    + activeModal ? :
    ) } } @@ -26,8 +20,5 @@ class PureModal extends Component { export default connect( state => ({ activeModal: state.ui.modal.activeModal - }), - { - hideModal: modalAction.hideModal - } + }) )(PureModal) diff --git a/web/src/js/components/Modal/ModalLayout.jsx b/web/src/js/components/Modal/ModalLayout.jsx new file mode 100644 index 00000000..cf357b2b --- /dev/null +++ b/web/src/js/components/Modal/ModalLayout.jsx @@ -0,0 +1,16 @@ +import React from 'react' + +export default function ModalLayout ({ children }) { + return ( +
    +
    + +
    + ) +} diff --git a/web/src/js/components/Modal/ModalList.jsx b/web/src/js/components/Modal/ModalList.jsx index 8ba46b00..1175d5ea 100644 --- a/web/src/js/components/Modal/ModalList.jsx +++ b/web/src/js/components/Modal/ModalList.jsx @@ -1,3 +1,13 @@ -import OptionModal from './OptionModal' +import React from 'react' +import ModalLayout from './ModalLayout' +import OptionContent from './OptionModal' + +function OptionModal() { + return ( + + + + ) +} export default [ OptionModal ] diff --git a/web/src/js/components/Modal/OptionModal.jsx b/web/src/js/components/Modal/OptionModal.jsx deleted file mode 100644 index d9e8b829..00000000 --- a/web/src/js/components/Modal/OptionModal.jsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' - -OptionModal.prototype = { - hideModal: PropTypes.function, -} - -export default function OptionModal( { hideModal }) { - const title = 'Options' - return ( - - ) -} -- cgit v1.2.3 From e28f3881dc9a72da73bebcaa7606a2c681151d6e Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Fri, 30 Jun 2017 20:46:50 +0800 Subject: [web] Update tests for components. --- .../Modal/__snapshots__/ModalSpec.js.snap | 60 ++++++++++++---------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap index f25c3330..4fe163d1 100644 --- a/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap +++ b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap @@ -21,39 +21,43 @@ exports[`Modal Component should render correctly 2`] = `
    -
    - + +
    +

    + Options +

    +
    +
    -

    - Options -

    + ...
    -
    -
    -
    - + +
    -- cgit v1.2.3 From aad0b95cbe65e97574d49f3933002d347470d1ef Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Fri, 30 Jun 2017 21:12:50 +0800 Subject: [web] Update js/components/Modal/OptionModal.jsx --- web/src/js/components/Modal/OptionModal.jsx | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 web/src/js/components/Modal/OptionModal.jsx diff --git a/web/src/js/components/Modal/OptionModal.jsx b/web/src/js/components/Modal/OptionModal.jsx new file mode 100644 index 00000000..500495c4 --- /dev/null +++ b/web/src/js/components/Modal/OptionModal.jsx @@ -0,0 +1,45 @@ +import React, { Component } from 'react' +import { connect } from 'react-redux' +import * as modalAction from '../../ducks/ui/modal' + +class PureOptionModal extends Component { + + constructor(props, context) { + super(props, context) + this.state = { title: 'Options', } + } + + render() { + const { hideModal } = this.props + const { title } = this.state + return ( +
    +
    + +
    +

    { title }

    +
    +
    + +
    + ... +
    + +
    + +
    +
    + ) + } +} + +export default connect( + state => ({ + + }), + { hideModal: modalAction.hideModal } +)(PureOptionModal) -- cgit v1.2.3