mirror of
				https://github.com/Instadapp/assembly.git
				synced 2024-07-29 22:37:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <SidebarContextRootContainer>
 | |
|     <template #title>Select Collateral</template>
 | |
|     <div>
 | |
|       <div class="px-8 pb-6 -mt-4">
 | |
|         <SearchInput
 | |
|           v-model.trim="search"
 | |
|           class="mt-1"
 | |
|           placeholder="Search Collateral"
 | |
|         />
 | |
|       </div>
 | |
|       <div class="bg-[#C5CCE1] bg-opacity-[0.15] px-8 py-6 min-h-screen">
 | |
|         <div
 | |
|           v-for="(vaultType, index) in filteredVaults"
 | |
|           :key="index"
 | |
|           class="flex items-center justify-between px-4 py-4 mt-4 cursor-pointer first:mt-0 group bg-white rounded-lg border border-grey-dark/[0.15] hover:bg-selection"
 | |
|           @click="select(vaultType.type)"
 | |
|         >
 | |
|           <div class="flex flex-col mr-4">
 | |
|             <div class="mb-1 font-semibold whitespace-no-wrap text-12">
 | |
|               {{ vaultType.type }}
 | |
|             </div>
 | |
|             <div
 | |
|               class="mb-1 font-medium whitespace-no-wrap text-12 text-grey-pure"
 | |
|             >
 | |
|               Stability Fee: {{ formatPercent(vaultType.rate) }}
 | |
|             </div>
 | |
|             <div
 | |
|               class="mb-1 font-medium whitespace-no-wrap text-12 text-grey-pure"
 | |
|             >
 | |
|               Liquidation: {{ formatPercent(vaultType.liquidation) }}
 | |
|             </div>
 | |
|           </div>
 | |
| 
 | |
|           <IconCurrency :currency="vaultType.tokenKey" />
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|   </SidebarContextRootContainer>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { defineComponent, useContext, computed } from '@nuxtjs/composition-api'
 | |
| import { useFormatting } from '~/composables/useFormatting'
 | |
| import { useMakerdaoPosition } from '~/composables/protocols/useMakerdaoPosition'
 | |
| import { useSearchFilter } from '~/composables/useSearchFilter'
 | |
| import { useSidebar } from '~/composables/useSidebar'
 | |
| 
 | |
| export default defineComponent({
 | |
|   props: {
 | |
|     vaultType: { type: String, default: null },
 | |
|   },
 | |
|   setup(props) {
 | |
|     const { store, app, route } = useContext()
 | |
|     const { formatPercent } = useFormatting()
 | |
|     const { back } = useSidebar()
 | |
|     const { vaultTypes: makerVaultTypes, vaultType, isNewVault } = useMakerdaoPosition()
 | |
| 
 | |
|     const vaultTypes = computed(() => {
 | |
|       const shouldFilter = !!props.vaultType && (props.vaultType === 'token' || props.vaultType === 'uniLPT')
 | |
|       const filtered = makerVaultTypes.value.filter((vault) => !vault.disabled)
 | |
|       const final = shouldFilter ? filtered.filter((vault) => vault.vaultTokenType === props.vaultType) : filtered
 | |
|       if (route.value.hash.startsWith('#collateral')) return final
 | |
|       return filtered.filter((vault) => vault.vaultTokenType === 'token')
 | |
|     })
 | |
| 
 | |
|     const { filtered: filteredVaults, search } = useSearchFilter(vaultTypes, 'type', 'token')
 | |
| 
 | |
|     function select(vt, tokenKey) {
 | |
|       vaultType.value = vt;
 | |
|       isNewVault.value = true
 | |
|       app.router.push({ hash: 'supply' })
 | |
|     }
 | |
| 
 | |
|     return {
 | |
|       filteredVaults,
 | |
|       search,
 | |
|       formatPercent,
 | |
|       select,
 | |
|     }
 | |
|   },
 | |
| })
 | |
| </script>
 | 
