MediaCategory.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <div class="MediaCategory">
  3. <div class="title">
  4. <q-icon :name="icon"
  5. size="19px" />
  6. {{ title }}
  7. </div>
  8. <div class="media-list row q-col-gutter-md">
  9. <div v-for="media in medias.list"
  10. :key="media.id"
  11. class="media-item col-md-3 col-sm-6 col-12">
  12. <media-item :media="media"
  13. :can-delete="canDelete"
  14. @onView="onView(media)"
  15. @onDelete="onDelete(media)" />
  16. </div>
  17. </div>
  18. </div>
  19. </template>
  20. <script>
  21. import { MediaList } from 'src/models/Media.js'
  22. import MediaItem from 'src/components/FormBuilderCustumComponents/ContentMedias/MediaItem.vue'
  23. export default {
  24. name: 'MediaCategory',
  25. components: { MediaItem },
  26. props: {
  27. medias: {
  28. type: MediaList,
  29. default: new MediaList()
  30. },
  31. title: {
  32. type: String,
  33. default: ''
  34. },
  35. icon: {
  36. type: String,
  37. default: ''
  38. },
  39. canDelete: {
  40. type: Boolean,
  41. default: true
  42. }
  43. },
  44. emits: ['update:value', 'onView', 'onDelete'],
  45. data () {
  46. return {
  47. entityCreateLoading: false
  48. }
  49. },
  50. methods: {
  51. onView (media) {
  52. this.$emit('onView', media)
  53. },
  54. onDelete (media) {
  55. this.$emit('onDelete', media)
  56. }
  57. }
  58. }
  59. </script>
  60. <style lang="scss" scoped>
  61. .MediaCategory {
  62. .title {
  63. font-size: 16px;
  64. letter-spacing: 0;
  65. color: #212121;
  66. margin-bottom: 26px;
  67. .q-icon {
  68. margin-left: 9px;
  69. }
  70. }
  71. }
  72. </style>