CareProgramItem.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <div class="row--block--wrapper">
  3. <div>
  4. <ul>
  5. <li v-for="(item, index) in items" :key="index">
  6. <div class="thumb">
  7. <img :src="item.imagePath" :alt="item.title" />
  8. </div>
  9. <div class="desc--wrap">
  10. <h2 class="title">{{ item.title }}</h2>
  11. <div class="captions" v-html="item.description"></div>
  12. <NuxtLink
  13. v-if="item.linkUrl"
  14. class="more--detail--href mt--20 ft--16"
  15. :to="item.linkUrl"
  16. :target="item.linkTarget || '_blank'"
  17. >
  18. {{ item.linkText }}<i class="ico"></i>
  19. </NuxtLink>
  20. <div class="small--text" v-if="item.smallText">{{ item.smallText }}</div>
  21. <div class="captions--text" v-if="item.captionText">
  22. {{ item.captionText }}
  23. </div>
  24. </div>
  25. </li>
  26. </ul>
  27. </div>
  28. </div>
  29. </template>
  30. <script setup>
  31. defineProps({
  32. items: {
  33. type: Array,
  34. required: true,
  35. default: () => [],
  36. validator: (items) => {
  37. return items.every(
  38. (item) =>
  39. item.imagePath &&
  40. item.title &&
  41. item.description &&
  42. typeof item.imagePath === "string" &&
  43. typeof item.title === "string" &&
  44. typeof item.description === "string"
  45. );
  46. },
  47. },
  48. });
  49. </script>