Feeds.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div
  3. v-if="currentFeeds && currentFeeds.length !== 0"
  4. class="divide-y virtual-list divide-dashed divide-divider"
  5. >
  6. <ul v-for="feed in currentFeeds" :key="feed.id" class="flex-col">
  7. <div data-test="list-item" class="show-on-large-screen">
  8. <li class="info">
  9. <label data-test="list-label" class="break-all">
  10. {{ feed.label || $t("no_label") }}
  11. </label>
  12. </li>
  13. <button class="icon" @click="deleteFeed(feed)">
  14. <i class="material-icons">delete</i>
  15. </button>
  16. </div>
  17. <div class="show-on-large-screen">
  18. <li data-test="list-message" class="info clamb-3">
  19. <label class="break-all">{{ feed.message || $t("empty") }}</label>
  20. </li>
  21. </div>
  22. </ul>
  23. </div>
  24. <ul v-else class="flex-col">
  25. <li>
  26. <p class="info">{{ $t("empty") }}</p>
  27. </li>
  28. </ul>
  29. </template>
  30. <script>
  31. import { deleteFeed, currentFeeds$ } from "~/helpers/fb/feeds"
  32. export default {
  33. subscriptions() {
  34. return {
  35. currentFeeds: currentFeeds$,
  36. }
  37. },
  38. methods: {
  39. async deleteFeed({ id }) {
  40. await deleteFeed(id)
  41. this.$toast.error(this.$t("deleted"), {
  42. icon: "delete",
  43. })
  44. },
  45. },
  46. }
  47. </script>
  48. <style scoped lang="scss">
  49. .virtual-list {
  50. max-height: calc(100vh - 270px);
  51. }
  52. .clamb-3 {
  53. display: -webkit-box;
  54. -webkit-line-clamp: 3;
  55. -webkit-box-orient: vertical;
  56. @apply overflow-hidden;
  57. }
  58. </style>