NetworkNavbarIcon.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <b-button :icon-left="iconName" class="network-button" data-test="button_network" @click="onClick">{{
  3. shortNetworkName
  4. }}</b-button>
  5. </template>
  6. <script>
  7. import { mapGetters } from 'vuex'
  8. import NetworkModal from '@/components/NetworkModal'
  9. export default {
  10. computed: {
  11. ...mapGetters('metamask', ['networkName', 'netId']),
  12. iconName() {
  13. return `${this.networkName}`.replace(/\)?\s\(?/g, '-').toLowerCase()
  14. },
  15. shortNetworkName() {
  16. switch (this.netId) {
  17. case 1:
  18. return 'Ethereum'
  19. case 5:
  20. return 'Goerli'
  21. case 56:
  22. return 'BSC Mainnet'
  23. case 137:
  24. return 'Polygon Network'
  25. case 42161:
  26. return 'Arbitrum'
  27. case 43114:
  28. return 'Avalanche'
  29. default:
  30. return this.networkName
  31. }
  32. }
  33. },
  34. methods: {
  35. onClick() {
  36. this.$buefy.modal.open({
  37. parent: this,
  38. component: NetworkModal,
  39. hasModalCard: true,
  40. width: 440
  41. })
  42. }
  43. }
  44. }
  45. </script>
  46. <style lang="scss" scoped>
  47. .network-button {
  48. padding-left: 0;
  49. border: 0;
  50. background-color: #242424;
  51. &:hover {
  52. color: #fff;
  53. background-color: #393939;
  54. }
  55. ::v-deep .icon {
  56. height: 2.857em;
  57. width: 2.857em;
  58. background-color: #0f1f19;
  59. border: 1px solid #94febf;
  60. border-radius: 4px;
  61. &:first-child:not(:last-child) {
  62. margin-right: 1em;
  63. }
  64. .trnd {
  65. background-color: #94febf;
  66. }
  67. }
  68. }
  69. </style>