evcc-io/assets/js/components/CustomSelect.vue
Michael Geers 7b89a0af5f
Some checks failed
Release / call-build-workflow (push) Has been cancelled
Release / Publish Docker :release (push) Has been cancelled
Release / Github & APT (push) Has been cancelled
Release / Demo (push) Has been cancelled
Release / Hassio Addon (push) Has been cancelled
Sessions: ui refinement, mobile table, breadcrumb, filters (#8793)
2023-07-06 23:39:21 +02:00

48 lines
833 B
Vue

<template>
<label class="position-relative d-block">
<select :value="selected" class="custom-select" @change="change">
<option
v-for="{ name, value, count } in options"
:key="value"
:value="value"
:disabled="count === 0"
>
{{ text(name, count) }}
</option>
</select>
<slot></slot>
</label>
</template>
<script>
export default {
name: "CustomSelect",
props: {
options: { type: Array },
selected: { type: String },
},
emits: ["change"],
methods: {
text(name, count) {
if (count === undefined) {
return name;
}
return `${name} (${count})`;
},
change(event) {
this.$emit("change", event);
},
},
};
</script>
<style scoped>
.custom-select {
left: 0;
top: 0;
bottom: 0;
right: 0;
position: absolute;
opacity: 0;
-webkit-appearance: menulist-button;
}
</style>