diff --git a/src/routes/safe/components/Balances/SendModal/index.jsx b/src/routes/safe/components/Balances/SendModal/index.jsx
index f8e20a50..b20bb25f 100644
--- a/src/routes/safe/components/Balances/SendModal/index.jsx
+++ b/src/routes/safe/components/Balances/SendModal/index.jsx
@@ -1,9 +1,9 @@
// @flow
import React, { useState, useEffect } from 'react'
import { List } from 'immutable'
-import { type Token } from '~/logic/tokens/store/model/token'
import cn from 'classnames'
import { withStyles } from '@material-ui/core/styles'
+import { type Token } from '~/logic/tokens/store/model/token'
import Modal from '~/components/Modal'
import ChooseTxType from './screens/ChooseTxType'
import SendFunds from './screens/SendFunds'
diff --git a/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/index.jsx b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/index.jsx
new file mode 100644
index 00000000..c7a698e2
--- /dev/null
+++ b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/index.jsx
@@ -0,0 +1,43 @@
+// @flow
+import React from 'react'
+import { List } from 'immutable'
+import Close from '@material-ui/icons/Close'
+import IconButton from '@material-ui/core/IconButton'
+import cn from 'classnames'
+import { withStyles } from '@material-ui/core/styles'
+import Modal from '~/components/Modal'
+import Hairline from '~/components/layout/Hairline'
+import Paragraph from '~/components/layout/Paragraph'
+import Row from '~/components/layout/Row'
+import { styles } from './style'
+
+type Props = {
+ onClose: () => void,
+ classes: Object,
+ isOpen: boolean,
+ createTransaction: Function,
+}
+
+const CancelTxModal = ({
+ onClose, isOpen, classes, createTransaction,
+}: Props) => (
+
+
+
+ Cancel transaction
+
+
+
+
+
+
+
+)
+
+export default withStyles(styles)(CancelTxModal)
diff --git a/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/style.js b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/style.js
new file mode 100644
index 00000000..5e062d96
--- /dev/null
+++ b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/CancelTxModal/style.js
@@ -0,0 +1,32 @@
+// @flow
+import { lg, md, sm } from '~/theme/variables'
+
+export const styles = () => ({
+ heading: {
+ padding: `${sm} ${lg}`,
+ justifyContent: 'space-between',
+ boxSizing: 'border-box',
+ maxHeight: '75px',
+ },
+ headingText: {
+ fontSize: '24px',
+ },
+ closeIcon: {
+ height: '35px',
+ width: '35px',
+ },
+ container: {
+ padding: `${md} ${lg}`,
+ },
+ buttonRow: {
+ height: '84px',
+ justifyContent: 'center',
+ position: 'absolute',
+ bottom: 0,
+ width: '100%',
+ },
+ smallerModalWindow: {
+ height: 'auto',
+ position: 'static',
+ },
+})
diff --git a/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/index.jsx b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/index.jsx
index 10ee3b5a..24a5fa78 100644
--- a/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/index.jsx
+++ b/src/routes/safe/components/TransactionsNew/TxsTable/ExpandedTx/index.jsx
@@ -19,6 +19,7 @@ import { shortVersionOf } from '~/logic/wallets/ethAddresses'
import { secondary } from '~/theme/variables'
import OwnersList from './OwnersList'
import ButtonRow from './ButtonRow'
+import CancelTxModal from './CancelTxModal'
import { styles } from './style'
import { formatDate } from '../columns'
@@ -32,6 +33,8 @@ type Props = {
owners: List,
}
+type OpenModal = 'cancelTx' | 'approveTx' | null
+
const openIconStyle = {
height: '13px',
color: secondary,
@@ -46,6 +49,11 @@ const ExpandedTx = ({
classes, tx, threshold, owners,
}: Props) => {
const [tabIndex, setTabIndex] = useState(0)
+ const [openModal, setOpenModal] = useState(null)
+ const openApproveModal = () => setOpenModal('approveTx')
+ const openCancelModal = () => setOpenModal('cancelTx')
+ const closeModal = () => setOpenModal(null)
+
const confirmedLabel = `Confirmed [${tx.confirmations.size}/${threshold}]`
const unconfirmedLabel = `Unconfirmed [${owners.size - tx.confirmations.size}]`
const txStatus = tx.isExecuted ? 'success' : 'awaiting_confirmations'
@@ -65,72 +73,75 @@ const ExpandedTx = ({
}
return (
-
-
-
-
-
- TX hash:
- {tx.executionTxHash ? (
-
- {shortVersionOf(tx.executionTxHash, 4)}
+ <>
+
+
+
+
+
+ TX hash:
+ {tx.executionTxHash ? (
+
+ {shortVersionOf(tx.executionTxHash, 4)}
+
+
+ ) : (
+ 'n/a'
+ )}
+
+
+ TX status:
+
+ {txStatusToLabel[txStatus]}
+
+
+
+ TX created:
+ {formatDate(tx.submissionDate)}
+
+ {tx.executionDate && (
+
+ TX executed:
+ {formatDate(tx.executionDate)}
+
+ )}
+
+
+
+
+
+ Send
+ {' '}
+ {fromWei(toBN(tx.value), 'ether')}
+ {' '}
+ {tx.symbol}
+ {' '}
+to:
+
+
+
+ {shortVersionOf(tx.recipient, 4)}
- ) : (
- 'n/a'
- )}
-
-
- TX status:
-
- {txStatusToLabel[txStatus]}
-
-
-
- TX created:
- {formatDate(tx.submissionDate)}
-
- {tx.executionDate && (
-
- TX executed:
- {formatDate(tx.executionDate)}
- )}
-
-
-
-
-
- Send
- {' '}
- {fromWei(toBN(tx.value), 'ether')}
- {' '}
- {tx.symbol}
- {' '}
- to:
-
-
-
- {shortVersionOf(tx.recipient, 4)}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {tabIndex === 0 && }
- {tabIndex === 1 && }
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {tabIndex === 0 && }
+ {tabIndex === 1 && }
+
+
+
+
+
+ >
)
}