mirror of
				https://github.com/Instadapp/assembly.git
				synced 2024-07-29 22:37:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <Dropdown>
 | |
|     <template #trigger="{ toggle }">
 | |
|       <Button
 | |
|         :disabled="disabled"
 | |
|         color="grey"
 | |
|         class="flex px-3 py-1"
 | |
|         :class="{ 'pointer-events-none': disabled }"
 | |
|         :style="{ background: disabled ? 'none' : '' }"
 | |
|         @click="toggle"
 | |
|       >
 | |
|         <div class="flex flex-col items-center">
 | |
|           <IconCurrency :currency="tokenKey" />
 | |
|           <div
 | |
|             class="mt-2 font-semibold text-center text-11"
 | |
|             :class="{
 | |
|               'dark:text-grey-pure': disabled
 | |
|             }"
 | |
|           >
 | |
|             {{ label }}
 | |
|           </div>
 | |
|         </div>
 | |
|       </Button>
 | |
|     </template>
 | |
| 
 | |
|     <template #menu="{ close }">
 | |
|       <DropdownMenu class="px-1 max-h-60">
 | |
|         <span v-if="!tokens.length" class="font-medium whitespace-no-wrap"
 | |
|           >No tokens available!</span
 | |
|         >
 | |
|         <div
 | |
|           v-else
 | |
|           class="flex flex-col overflow-x-hidden overflow-y-auto scrollbar-hover' pl-1 space-y-2 scrollbar"
 | |
|         >
 | |
|           <Button
 | |
|             v-for="(tokenKey, index) in tokens"
 | |
|             :key="index"
 | |
|             color="grey"
 | |
|             class="py-2 pl-2 pr-4 mr-1"
 | |
|             @click="select(tokenKey, close)"
 | |
|           >
 | |
|             <TokenSelectOption :token-key="tokenKey" class="w-full" />
 | |
|           </Button>
 | |
|         </div>
 | |
|       </DropdownMenu>
 | |
|     </template>
 | |
|   </Dropdown>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { computed, defineComponent } from '@nuxtjs/composition-api'
 | |
| import { useToken } from '~/composables/useToken'
 | |
| import DropdownMenu from '~/components/protocols/DropdownMenu.vue'
 | |
| import Dropdown from './common/input/Dropdown.vue'
 | |
| 
 | |
| export default defineComponent({
 | |
|   components: {
 | |
|     DropdownMenu,
 | |
|     Dropdown
 | |
|   },
 | |
|   model: {
 | |
|     prop: 'tokenKey',
 | |
|     event: 'change',
 | |
|   },
 | |
|   props: {
 | |
|     tokenKey: { type: String, default: null },
 | |
|     tokens: { type: Array, default: () => [] },
 | |
|     disabled: { type: Boolean, default: false },
 | |
|   },
 | |
|   setup(props, { emit }) {
 | |
|     const { getTokenByKey } = useToken()
 | |
|     const token = computed(() => getTokenByKey(props.tokenKey))
 | |
|     const label = computed(() => (props.disabled ? token.value?.symbol : 'Change'))
 | |
|     function select(tokenKey, callback) {
 | |
|       emit('change', tokenKey)
 | |
|       callback()
 | |
|     }
 | |
|     return { select, label }
 | |
|   },
 | |
| })
 | |
| </script> | 
