<template> <ul class="countries nolist"> <li v-for="country in countries" :key="country.alpha2" :title="country.name" :class="{ selected: selectedCountry === country.alpha2 }" class="country" @click="updateValue('country', country.alpha2, true)" > <img :src="`/img/flags/${country.alpha2.toLowerCase()}.svg`" class="flag" > <span class="country-name">{{ country.alias || country.name }}</span> <Icon v-if="selectedCountry === country.alpha2" icon="cross2" @click.native.stop="updateValue('country', null, true)" /> </li> </ul> </template> <script> export default { props: { countries: { type: Array, default: () => [], }, selectedCountry: { type: String, default: null, }, updateValue: { type: Function, default: null, }, }, }; </script> <style lang="scss" scoped> .countries:not(:last-child) { border-bottom: solid 1px var(--shadow-hint); } .country { width: 15rem; display: flex; align-items: center; overflow: hidden; .flag { width: 1.25rem; padding: .25rem .5rem; } .icon { padding: .25rem .5rem;; fill: var(--shadow); &:hover { fill: var(--shadow-strong); } } &:hover { background: var(--shadow-hint); cursor: pointer; } &.selected { font-weight: bold; } } .country-name { flex-grow: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: .25rem .5rem; } </style>