You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SearchFilterChip.vue 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <div class="chip">
  3. <span class="icon">
  4. <slot name="icon" />
  5. <span v-if="pretext.length"> {{ pretext }} : </span>
  6. </span>
  7. <span class="text">{{ text }}</span>
  8. <span class="close-icon" @click="deleteChip">
  9. <CloseIcon :size="18" />
  10. </span>
  11. </div>
  12. </template>
  13. <script>
  14. import CloseIcon from 'vue-material-design-icons/Close.vue'
  15. export default {
  16. name: 'SearchFilterChip',
  17. components: {
  18. CloseIcon,
  19. },
  20. props: {
  21. text: {
  22. type: String,
  23. required: true,
  24. },
  25. pretext: {
  26. type: String,
  27. required: true,
  28. },
  29. },
  30. methods: {
  31. deleteChip() {
  32. this.$emit('delete', this.filter)
  33. },
  34. },
  35. }
  36. </script>
  37. <style lang="scss" scoped>
  38. .chip {
  39. display: flex;
  40. align-items: center;
  41. padding: 2px 4px;
  42. border: 1px solid var(--color-primary-element-light);
  43. border-radius: 20px;
  44. background-color: var(--color-primary-element-light);
  45. margin: 2px;
  46. .icon {
  47. display: flex;
  48. align-items: center;
  49. padding-right: 5px;
  50. img {
  51. width: 20px;
  52. padding: 2px;
  53. border-radius: 20px;
  54. filter: var(--background-invert-if-bright);
  55. }
  56. }
  57. .text {
  58. margin: 0 2px;
  59. }
  60. .close-icon {
  61. cursor: pointer ;
  62. :hover {
  63. filter: invert(20%);
  64. }
  65. }
  66. }
  67. </style>