assembly/components/sidebar/context/strategy/SidebarStrategy.vue

76 lines
2.1 KiB
Vue
Raw Normal View History

2021-08-22 12:54:23 +00:00
<template>
<SidebarContextContainer class="h-full overflow-hidden">
<SidebarContextHeader class="xxl:hidden">Strategy</SidebarContextHeader>
<div class="h-full overflow-y-scroll scrollbar-hover">
<div class="mx-auto" style="max-width: 296px">
<div class="py-2 sm:py-4">
2021-08-22 17:35:46 +00:00
<div v-for="(input, index) in inputs" :key="index">
2021-08-22 18:32:28 +00:00
<input-amount
:key="index"
2021-08-22 17:35:46 +00:00
:value="input.value"
2021-08-22 18:32:28 +00:00
:token-key="input.token ? input.token.key : 'eth'"
2021-08-22 19:34:59 +00:00
:token-keys="input.tokenKeys ? input.tokenKeys : activeStrategy.getContext()['tokenKeys']"
2021-08-22 17:35:46 +00:00
:placeholder="input.placeholder()"
2021-08-22 18:32:28 +00:00
:error="input.error"
@input="$event => input.onInput($event)"
@tokenKeyChanged="
tokenKey => {
input.onCustomInput({
2021-08-22 19:34:59 +00:00
token: getTokenByKey(tokenKey)
2021-08-22 18:32:28 +00:00
});
}
"
2021-08-22 17:35:46 +00:00
/>
</div>
2021-08-22 18:32:28 +00:00
<button @click="submit">Submit</button>
2021-08-22 17:35:46 +00:00
{{ error }}
2021-08-22 12:54:23 +00:00
</div>
</div>
</div>
</SidebarContextContainer>
</template>
2021-08-22 13:49:31 +00:00
<script lang="ts">
2021-08-22 17:35:46 +00:00
import { defineComponent } from "@nuxtjs/composition-api";
2021-08-22 13:49:31 +00:00
import { useSidebar } from "~/composables/useSidebar";
import { protocolStrategies, DefineStrategy } from "~/core/strategies";
2021-08-22 17:35:46 +00:00
import { useStrategy } from "~/composables/useStrategy";
2021-08-22 18:32:28 +00:00
import InputAmount from "~/components/common/input/InputAmount.vue";
2021-08-22 19:34:59 +00:00
import { useToken } from "~/composables/useToken";
2021-08-22 12:54:23 +00:00
export default defineComponent({
2021-08-22 18:32:28 +00:00
components: { InputAmount },
2021-08-22 12:54:23 +00:00
props: {
protocol: {
type: String,
2021-08-22 13:49:31 +00:00
required: true
2021-08-22 12:54:23 +00:00
},
strategy: {
type: String,
2021-08-22 13:49:31 +00:00
required: true
2021-08-22 12:54:23 +00:00
}
},
setup(props) {
const { close } = useSidebar();
2021-08-22 19:34:59 +00:00
const { getTokenByKey } = useToken();
2021-08-22 12:54:23 +00:00
2021-08-22 13:49:31 +00:00
const strategies: DefineStrategy[] =
protocolStrategies[props.protocol] || [];
2021-08-22 12:54:23 +00:00
2021-08-22 19:34:59 +00:00
const { inputs, submit, error, strategy : activeStrategy} = useStrategy(
2021-08-22 13:49:31 +00:00
strategies.find(strategy => strategy.id === props.strategy)
);
2021-08-22 12:54:23 +00:00
return {
2021-08-22 17:35:46 +00:00
inputs,
error,
2021-08-22 19:34:59 +00:00
submit,
activeStrategy,
getTokenByKey,
2021-08-22 13:49:31 +00:00
};
}
});
2021-08-22 12:54:23 +00:00
</script>