aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/modals
diff options
context:
space:
mode:
authorsdtsui <szehungdanieltsui@gmail.com>2017-08-21 10:10:49 +0800
committersdtsui <szehungdanieltsui@gmail.com>2017-08-21 10:10:49 +0800
commit71b2dd290b2bbf3107d06d0616ec8858d21b44da (patch)
tree874a8857b70254b42bf1cd1b1ff6b2c1d4a5246e /ui/app/components/modals
parent4e9376ca7129611d12a7ec263741f1dee0e4d79c (diff)
downloadtangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar.gz
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar.bz2
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar.lz
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar.xz
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.tar.zst
tangerine-wallet-browser-71b2dd290b2bbf3107d06d0616ec8858d21b44da.zip
Enhance global modal to handle Buy, Edit, and Details Modals
Diffstat (limited to 'ui/app/components/modals')
-rw-r--r--ui/app/components/modals/account-details-modal.js73
-rw-r--r--ui/app/components/modals/buy-modal.js43
-rw-r--r--ui/app/components/modals/buy-options-modal.js80
-rw-r--r--ui/app/components/modals/edit-account-name-modal.js80
-rw-r--r--ui/app/components/modals/index.js4
-rw-r--r--ui/app/components/modals/modal.js14
6 files changed, 244 insertions, 50 deletions
diff --git a/ui/app/components/modals/account-details-modal.js b/ui/app/components/modals/account-details-modal.js
new file mode 100644
index 000000000..45f54908f
--- /dev/null
+++ b/ui/app/components/modals/account-details-modal.js
@@ -0,0 +1,73 @@
+const Component = require('react').Component
+const h = require('react-hyperscript')
+const inherits = require('util').inherits
+const connect = require('react-redux').connect
+const actions = require('../../actions')
+
+function mapStateToProps (state) {
+ return {
+ address: state.metamask.selectedAddress,
+ }
+}
+
+function mapDispatchToProps (dispatch) {
+ return {
+ hideModal: () => {
+ dispatch(actions.hideModal())
+ }
+ }
+}
+
+inherits(AccountDetailsModal, Component)
+function AccountDetailsModal () {
+ Component.call(this)
+}
+
+module.exports = connect(mapStateToProps, mapDispatchToProps)(AccountDetailsModal)
+
+// AccountDetailsModal is currently meant to be rendered inside <Modal />
+// It is the only component in this codebase that does so
+// It utilizes modal styles
+AccountDetailsModal.prototype.render = function () {
+ return h('div', {}, [
+ h('div.modal-content.transfers-subview', {
+ }, [
+ h('div.modal-content-title-wrapper.flex-column.flex-center', {
+ style: {},
+ }, [
+ h('div.modal-content-title', {
+ style: {},
+ }, 'Account Details Modal'),
+ h('div', {}, 'How would you like to buy Ether?'),
+ ]),
+
+ h('div.modal-content-options.flex-column.flex-center', {}, [
+
+ h('div.modal-content-option', {
+ onClick: () => {},
+ }, [
+ h('div.modal-content-option-title', {}, 'Coinbase'),
+ h('div.modal-content-option-subtitle', {}, 'Buy with Fiat'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Shapeshift'),
+ h('div.modal-content-option-subtitle', {}, 'Trade any digital asset for any other'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Direct Deposit'),
+ h('div.modal-content-option-subtitle', {}, 'Deposit from another account'),
+ ]),
+
+ ]),
+
+ h('button', {
+ style: {
+ background: 'white',
+ },
+ onClick: () => { this.props.hideModal() },
+ }, h('div.modal-content-footer#modal-content-footer-text',{}, 'Cancel')),
+ ])
+ ])
+}
diff --git a/ui/app/components/modals/buy-modal.js b/ui/app/components/modals/buy-modal.js
deleted file mode 100644
index c69433b1f..000000000
--- a/ui/app/components/modals/buy-modal.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const Component = require('react').Component
-const h = require('react-hyperscript')
-const inherits = require('util').inherits
-const BuyOptions = require('../buy-options')
-const Modal = require('./modal.js')
-
-inherits(BuyModal, Component)
-function BuyModal () {
- Component.call(this)
-}
-
-module.exports = BuyModal
-
-BuyModal.prototype.render = function () {
- return h(Modal, {
- ref: "modalRef",
- }, [
- h(BuyOptions, {}, []),
- ])
-
-}
-
-// TODO: specify default props and proptypes
-
-// Generalize to multiple modals:
-// Modal API:
-// - props {
-// key: ['BUY', 'EDIT_ACCOUNT_NAME', 'ACCOUNT_DETAILS']
-// }
-// - These props will be passed as 'active'
-// mapStateToProps(state, ownProps) {
-// active: state.appState.modal[key]
-// }
-// - Modal accepts:
-// - mobileModalStyles, for mobile viewports
-// - laptopModalStyles, for laptop viewports
-// - backdropStyles
-// - Do not set defaults, they are unneeded here
-//
-// If multiple-step modals are needed:
-// - pass a component with internal state that tracks buy steps
-// - steps could technically be in redux
-// - it renders and does not trigger open/close actions until done \ No newline at end of file
diff --git a/ui/app/components/modals/buy-options-modal.js b/ui/app/components/modals/buy-options-modal.js
new file mode 100644
index 000000000..170ac96b8
--- /dev/null
+++ b/ui/app/components/modals/buy-options-modal.js
@@ -0,0 +1,80 @@
+const Component = require('react').Component
+const h = require('react-hyperscript')
+const inherits = require('util').inherits
+const connect = require('react-redux').connect
+const actions = require('../../actions')
+
+function mapStateToProps (state) {
+ return {
+ network: state.metamask.network,
+ address: state.metamask.selectedAddress,
+ }
+}
+
+function mapDispatchToProps (dispatch) {
+ return {
+ toCoinbase: (address) => {
+ dispatch(actions.buyEth({ network: '1', address, amount: 0 }))
+ },
+ hideModal: () => {
+ dispatch(actions.hideModal())
+ }
+ }
+}
+
+inherits(BuyOptions, Component)
+function BuyOptions () {
+ Component.call(this)
+}
+
+module.exports = connect(mapStateToProps, mapDispatchToProps)(BuyOptions)
+
+// BuyOptions is currently meant to be rendered inside <Modal />
+// It is the only component in this codebase that does so
+// It utilizes modal styles
+BuyOptions.prototype.render = function () {
+ return h('div', {}, [
+ h('div.modal-content.transfers-subview', {
+ }, [
+ h('div.modal-content-title-wrapper.flex-column.flex-center', {
+ style: {},
+ }, [
+ h('div.modal-content-title', {
+ style: {},
+ }, 'Transfers'),
+ h('div', {}, 'How would you like to buy Ether?'),
+ ]),
+
+ h('div.modal-content-options.flex-column.flex-center', {}, [
+
+ h('div.modal-content-option', {
+ onClick: () => {
+ const { toCoinbase, address } = this.props
+ toCoinbase(address)
+ },
+ }, [
+ h('div.modal-content-option-title', {}, 'Coinbase'),
+ h('div.modal-content-option-subtitle', {}, 'Buy with Fiat'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Shapeshift'),
+ h('div.modal-content-option-subtitle', {}, 'Trade any digital asset for any other'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Direct Deposit'),
+ h('div.modal-content-option-subtitle', {}, 'Deposit from another account'),
+ ]),
+
+ ]),
+
+ h('button', {
+ style: {
+ background: 'white',
+ },
+ onClick: () => { this.props.hideModal() },
+ }, h('div.modal-content-footer#modal-content-footer-text',{}, 'Cancel')),
+ ])
+ ])
+}
diff --git a/ui/app/components/modals/edit-account-name-modal.js b/ui/app/components/modals/edit-account-name-modal.js
new file mode 100644
index 000000000..5d2d2e120
--- /dev/null
+++ b/ui/app/components/modals/edit-account-name-modal.js
@@ -0,0 +1,80 @@
+const Component = require('react').Component
+const h = require('react-hyperscript')
+const inherits = require('util').inherits
+const connect = require('react-redux').connect
+const actions = require('../../actions')
+
+function mapStateToProps (state) {
+ return {
+ network: state.metamask.network,
+ address: state.metamask.selectedAddress,
+ }
+}
+
+function mapDispatchToProps (dispatch) {
+ return {
+ toCoinbase: (address) => {
+ dispatch(actions.buyEth({ network: '1', address, amount: 0 }))
+ },
+ hideModal: () => {
+ dispatch(actions.hideModal())
+ }
+ }
+}
+
+inherits(BuyOptions, Component)
+function BuyOptions () {
+ Component.call(this)
+}
+
+module.exports = connect(mapStateToProps, mapDispatchToProps)(BuyOptions)
+
+// BuyOptions is currently meant to be rendered inside <Modal />
+// It is the only component in this codebase that does so
+// It utilizes modal styles
+BuyOptions.prototype.render = function () {
+ return h('div', {}, [
+ h('div.modal-content.transfers-subview', {
+ }, [
+ h('div.modal-content-title-wrapper.flex-column.flex-center', {
+ style: {},
+ }, [
+ h('div.modal-content-title', {
+ style: {},
+ }, 'Edit Account Name Modal'),
+ h('div', {}, 'How would you like to buy Ether?'),
+ ]),
+
+ h('div.modal-content-options.flex-column.flex-center', {}, [
+
+ h('div.modal-content-option', {
+ onClick: () => {
+ const { toCoinbase, address } = this.props
+ toCoinbase(address)
+ },
+ }, [
+ h('div.modal-content-option-title', {}, 'Coinbase'),
+ h('div.modal-content-option-subtitle', {}, 'Buy with Fiat'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Shapeshift'),
+ h('div.modal-content-option-subtitle', {}, 'Trade any digital asset for any other'),
+ ]),
+
+ h('div.modal-content-option', {}, [
+ h('div.modal-content-option-title', {}, 'Direct Deposit'),
+ h('div.modal-content-option-subtitle', {}, 'Deposit from another account'),
+ ]),
+
+ ]),
+
+ h('button', {
+ style: {
+ background: 'white',
+ },
+ onClick: () => { this.props.hideModal() },
+ }, h('div.modal-content-footer#modal-content-footer-text',{}, 'Cancel')),
+ ])
+ ])
+}
diff --git a/ui/app/components/modals/index.js b/ui/app/components/modals/index.js
index 23b432b7c..e2e367af0 100644
--- a/ui/app/components/modals/index.js
+++ b/ui/app/components/modals/index.js
@@ -1,9 +1,5 @@
const Modal = require('./modal')
-const BuyModal = require('./buy-modal')
-// const h = require('account-options')
-// const h = require('account-details')
module.exports = {
Modal,
- BuyModal,
} \ No newline at end of file
diff --git a/ui/app/components/modals/modal.js b/ui/app/components/modals/modal.js
index 45aa09095..04a34cfed 100644
--- a/ui/app/components/modals/modal.js
+++ b/ui/app/components/modals/modal.js
@@ -6,14 +6,22 @@ const FadeModal = require('boron').FadeModal
const actions = require('../../actions')
const isMobileView = require('../../../lib/is-mobile-view')
const isPopupOrNotification = require('../../../../app/scripts/lib/is-popup-or-notification')
-const BuyOptions = require('../buy-options')
+
+// Modal Components
+const BuyOptions = require('./buy-options-modal')
+const AccountDetailsModal = require('./account-details-modal')
+const EditAccountNameModal = require('./edit-account-name-modal')
const MODALS = {
BUY: [
h(BuyOptions, {}, []),
],
- EDIT_ACCOUNT_NAME: [],
- ACCOUNT_DETAILS: [],
+ EDIT_ACCOUNT_NAME: [
+ h(AccountDetailsModal, {}, []),
+ ],
+ ACCOUNT_DETAILS: [
+ h(EditAccountNameModal, {}, []),
+ ],
}
function mapStateToProps (state) {