tornado-initiation-ui/components/Step.vue

136 lines
3.7 KiB
Vue
Raw Normal View History

2020-10-12 19:41:52 +02:00
<template>
2020-11-21 11:46:25 +01:00
<div :id="data.isActive ? 'current' : ''" class="step">
2020-11-05 14:54:14 +01:00
<div class="step-container">
<diamond
:active="!!data.deployerAddress"
:waiting="!canDeploy(data.domain)"
/>
<div class="step-body">
<h4>{{ data.title }}</h4>
<h5 v-if="data.domain" class="deployed">
ENS:
<a :href="domainUrl(data.expectedAddress)" target="_blank">{{
data.domain
2020-11-05 02:33:56 +01:00
}}</a>
2020-11-05 14:54:14 +01:00
</h5>
<i18n
v-if="data.deployerAddress"
class="deployed"
tag="h6"
path="deployedBy"
>
<template v-slot:link>
2020-11-30 21:55:16 +01:00
<a :href="txExplorerUrl(data.deployTransaction)" target="_blank">{{
2020-11-05 14:54:14 +01:00
data.deployerAddress
}}</a>
</template>
</i18n>
</div>
<div class="step-more-button">
2020-11-21 11:46:25 +01:00
<b-button
size="is-small"
:class="data.isActive ? 'button--active' : ''"
@click="isExpanded = !isExpanded"
>{{ isExpanded ? 'Less' : 'More' }}</b-button
>
2020-10-12 19:41:52 +02:00
</div>
2020-11-05 14:54:14 +01:00
<div class="step-tail">
<div v-if="data.deployerAddress" class="completed">
<b-icon icon="check" />
<span>{{ $t('completed') }}</span>
</div>
<b-tooltip
v-else
:label="
isNotLoggedIn
? $t('pleaseConnectWallet')
: !canDeploy(data.domain)
? $t('dependsOnEns', { ens: data.dependsOn.join(', ') })
: ''
"
position="is-top"
multilined
:size="isNotLoggedIn ? 'is-small' : 'is-large'"
:active="isNotLoggedIn || !canDeploy(data.domain)"
>
2020-11-05 14:54:14 +01:00
<b-button
type="is-primary"
outlined
icon-left="tool"
2020-11-19 11:25:44 +01:00
:disabled="
isNotLoggedIn || !canDeploy(data.domain) || data.isPending
"
2020-11-05 14:54:14 +01:00
@mousedown="(e) => e.preventDefault()"
@click="onDeploy"
>
{{ $t('deploy') }}
</b-button>
</b-tooltip>
</div>
2020-10-12 19:41:52 +02:00
</div>
2020-11-05 14:54:14 +01:00
<transition-expand>
<div v-show="isExpanded" class="step-more">
2020-11-20 17:11:39 +01:00
<p v-show="!data.airdrops">
{{ data.description }}
</p>
2020-11-21 11:46:25 +01:00
<b-table
v-show="data.airdrops"
:data="data.airdrops"
:sticky-header="true"
2020-12-09 14:52:44 +01:00
:row-class="(row) => row.address === getAccount && 'is-selected'"
2020-11-20 17:11:39 +01:00
>
2020-11-23 11:43:50 +01:00
<b-table-column v-slot="props" field="address" label="Address">
2020-11-21 11:46:25 +01:00
<a :href="domainUrl(props.row.address)" target="_blank">{{
props.row.address
}}</a>
</b-table-column>
<b-table-column v-slot="props" field="value" label="Value">
{{ Number(props.row.value).toFixed(4) }} vTORN
</b-table-column>
</b-table>
2020-11-05 14:54:14 +01:00
</div>
</transition-expand>
2020-10-12 19:41:52 +02:00
</div>
</template>
<script>
import { mapGetters, mapActions } from 'vuex'
2020-10-12 19:41:52 +02:00
import Diamond from '@/components/Diamond'
2020-11-05 14:54:14 +01:00
import TransitionExpand from '@/components/TransitionExpand'
2020-10-12 19:41:52 +02:00
export default {
components: {
Diamond,
2020-11-05 14:54:14 +01:00
TransitionExpand,
2020-10-12 19:41:52 +02:00
},
props: {
data: {
type: Object,
required: true,
},
},
2020-11-05 14:54:14 +01:00
data() {
return {
isExpanded: false,
}
},
computed: {
2020-11-23 11:43:50 +01:00
...mapGetters('provider', ['getProviderName', 'getAccount']),
2020-11-05 02:33:56 +01:00
...mapGetters('steps', ['canDeploy']),
2020-11-30 21:55:16 +01:00
...mapGetters('txStorage', ['txExplorerUrl']),
isNotLoggedIn() {
return !this.getProviderName
},
},
2020-10-21 16:42:50 +02:00
methods: {
...mapActions('deploy', ['deployContract']),
2020-11-19 11:25:44 +01:00
onDeploy() {
this.deployContract({ action: this.data, index: this.$vnode.key })
2020-11-05 02:33:56 +01:00
},
domainUrl(address) {
2021-06-02 11:47:40 +02:00
return `https://bscscan.com/address/${address}`
2020-11-05 02:33:56 +01:00
},
2020-10-21 16:42:50 +02:00
},
2020-10-12 19:41:52 +02:00
}
</script>