mirror of
				https://github.com/Instadapp/assembly.git
				synced 2024-07-29 22:37:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <dropdown>
 | |
|     <template #trigger="{ toggle, isShown }">
 | |
|       <Button
 | |
|         :class="{
 | |
|           'bg-grey-light': isShown
 | |
|         }"
 | |
|         :large="true"
 | |
|         color="grey"
 | |
|         class="w-20 px-3 xxl:w-23"
 | |
|         aria-label="Reflexer Dropdown"
 | |
|         aria-haspopup="true"
 | |
|         @click="toggle()"
 | |
|       >
 | |
|         <span class="mr-2">#{{ safeId }}</span>
 | |
| 
 | |
|         <SVGChevronUp
 | |
|           class="ml-auto"
 | |
|           :class="{ 'transform rotate-180': !isShown }"
 | |
|         />
 | |
|       </Button>
 | |
|     </template>
 | |
| 
 | |
|     <template #menu="{ close }">
 | |
|       <dropdown-menu style="width: 240px; max-height: 440px">
 | |
|         <div class="flex flex-col overflow-x-hidden overflow-y-auto scrollbar-hover scrollbar">
 | |
|           <button
 | |
|             v-for="safe in safes"
 | |
|             :key="safe.id"
 | |
|             class="flex items-center w-full px-4 py-2 hover:bg-opacity-50 focus:bg-opacity-50 hover:bg-grey-light dark:hover:bg-dark-300 dark:focus:bg-dark-300 focus:outline-none focus:bg-grey-light"
 | |
|             @click="setSafe(safe.id, close)"
 | |
|           >
 | |
|             <div class="mr-2 font-semibold whitespace-no-wrap">
 | |
|               #{{ safe.id }}
 | |
|             </div>
 | |
|             <IconCurrency
 | |
|               :currency="safe.tokenKey"
 | |
|               class="w-6 h-6 ml-auto"
 | |
|               no-height
 | |
|             />
 | |
|           </button>
 | |
|         </div>
 | |
| 
 | |
|         <hr v-if="!!safes.length" class="w-full my-2" />
 | |
| 
 | |
|         <button
 | |
|           class="flex items-center w-full px-4 py-2 font-medium hover:bg-opacity-75 focus:bg-opacity-75 text-ocean-blue-pure hover:bg-ocean-blue-light focus:bg-ocean-blue-light focus:outline-none dark:hover:bg-opacity-17 dark:focus:bg-opacity-17"
 | |
|           @click="openNewSafe(close)"
 | |
|         >
 | |
|           New Safe
 | |
|         </button>
 | |
|       </dropdown-menu>
 | |
|     </template>
 | |
|   </dropdown>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { defineComponent, useRouter } from '@nuxtjs/composition-api'
 | |
| import SVGChevronUp from '@/assets/img/icons/chevron-up.svg?inline'
 | |
| import { useReflexerPosition } from '~/composables/protocols/useReflexerPosition'
 | |
| import { useSidebar } from '~/composables/useSidebar'
 | |
| import Dropdown from '../../common/input/Dropdown.vue'
 | |
| import DropdownMenu from '../DropdownMenu.vue'
 | |
| 
 | |
| export default defineComponent({
 | |
|   components: {
 | |
|     SVGChevronUp,
 | |
|     Dropdown,
 | |
|     DropdownMenu,
 | |
|   },
 | |
| 
 | |
|   setup() {
 | |
|     const router  = useRouter()
 | |
|     const { safeId, safes, selectSafe, isNewSafe } = useReflexerPosition()
 | |
|     const { back } = useSidebar()
 | |
| 
 | |
|     function openNewSafe(cb) {
 | |
|       router.push({ hash: 'collateral' })
 | |
| 
 | |
|       cb();
 | |
|     }
 | |
| 
 | |
|     function setSafe(safeId, cb) {
 | |
|       selectSafe(safeId)
 | |
| 
 | |
|       if (isNewSafe.value) {
 | |
|         back()
 | |
|       }
 | |
| 
 | |
|       cb()
 | |
|     }
 | |
| 
 | |
|     return { safeId, safes, openNewSafe, setSafe }
 | |
|   },
 | |
| })
 | |
| </script>
 | 
