<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>
</template>

<script>
export default {
	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) {
			value = value || this.default;
			this.$emit('change', value);
		},
		getValue(item) {
			return item?.value;
		}
	}
};
</script>

<style>
.vue-select {
    width: 50%;
}

.field-buttons .vue-select {
	width: unset;
}

.vue-select,
.vue-dropdown {
	border-color: rgba(var(--color), .26);
}

.vue-dropdown {
	background: var(--secondary-background);
}

.vue-dropdown-item {
	color: var(--color);
}

.vue-dropdown-item.highlighted {
	background-color: var(--background-tooltip);
}

.vue-dropdown-item.selected,
.vue-dropdown-item.highlighted.selected {
	background-color: var(--bought);
}
</style>