Profectus/src/components/fields/Select.vue

83 lines
1.7 KiB
Vue
Raw Normal View History

2021-05-22 15:29:06 -05:00
<template>
<div class="field">
<span class="field-title" v-if="title">{{ title }}</span>
<vue-select
:options="options"
:model-value="value"
@update:modelValue="setSelected"
label-by="label"
:value-by="getValue"
:placeholder="placeholder"
:close-on-select="closeOnSelect"
/>
</div>
2021-05-22 15:29:06 -05:00
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "Select",
props: {
title: String,
options: Array, // https://vue-select.org/guide/options.html#options-prop
value: [String, Object],
default: [String, Object],
placeholder: String,
closeOnSelect: Boolean
},
emits: ["change"],
methods: {
setSelected(value: any) {
value = value || this.default;
this.$emit("change", value);
},
getValue(item?: { value: any }) {
return item?.value;
}
}
});
2021-05-22 15:29:06 -05:00
</script>
<style>
2021-07-24 17:08:52 -05:00
.vue-select {
2021-05-22 15:29:06 -05:00
width: 50%;
2021-09-04 16:51:41 -05:00
border-radius: var(--border-radius);
2021-05-22 15:29:06 -05:00
}
2021-07-24 17:08:52 -05:00
.field-buttons .vue-select {
width: unset;
2021-05-22 15:29:06 -05:00
}
2021-07-24 17:08:52 -05:00
.vue-select,
.vue-dropdown {
2021-09-04 16:51:41 -05:00
border-color: var(--outline);
2021-05-22 15:29:06 -05:00
}
2021-07-24 17:08:52 -05:00
.vue-dropdown {
2021-09-04 16:51:41 -05:00
background: var(--raised-background);
2021-05-22 15:29:06 -05:00
}
2021-07-24 17:08:52 -05:00
.vue-dropdown-item {
2021-09-04 16:51:41 -05:00
color: var(--feature-foreground);
}
.vue-dropdown-item,
.vue-dropdown-item * {
transition-duration: 0s;
2021-05-22 15:29:06 -05:00
}
2021-07-24 17:08:52 -05:00
.vue-dropdown-item.highlighted {
2021-09-04 16:51:41 -05:00
background-color: var(--highlighted);
2021-05-22 15:29:06 -05:00
}
2021-06-20 23:29:55 -05:00
2021-07-24 17:08:52 -05:00
.vue-dropdown-item.selected,
.vue-dropdown-item.highlighted.selected {
background-color: var(--bought);
2021-06-20 23:29:55 -05:00
}
2021-09-04 16:51:41 -05:00
.vue-input input::placeholder {
color: var(--link);
}
2021-05-22 15:29:06 -05:00
</style>