LandingPage.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <div class="card manage-card">
  3. <header class="card-header card-section">
  4. <p class="card-header-title">Course Landing Page</p>
  5. </header>
  6. <div class="card-content card-section">
  7. <form>
  8. <div class="field">
  9. <label class="label">Course title</label>
  10. <div class="control">
  11. <input
  12. :value="course.title"
  13. @input="($event) => emitCourseValue($event, 'title')"
  14. class="input is-medium"
  15. type="text"
  16. placeholder="Dart and Flutter From Zero to Hero ">
  17. </div>
  18. </div>
  19. <div class="field">
  20. <label class="label">Course subtitle</label>
  21. <div class="control">
  22. <input
  23. :value="course.subtitle"
  24. @input="($event) => emitCourseValue($event, 'subtitle')"
  25. class="input is-medium"
  26. type="text"
  27. placeholder="Build real mobile Application for Android and iOS.">
  28. </div>
  29. </div>
  30. <div class="field">
  31. <label class="label">Course description</label>
  32. <div class="control">
  33. <!-- <textarea
  34. :value="course.description"
  35. @input="($event) => emitCourseValue($event, 'description')"
  36. class="textarea is-medium"
  37. type="text"
  38. placeholder="Write something catchy about the course">
  39. </textarea> -->
  40. <CourseEditor
  41. :initialContent="course.description"
  42. @editorUpdated="(content) => emitCourseValue(content, 'description')"
  43. />
  44. </div>
  45. </div>
  46. <div class="field">
  47. <label class="label">Category</label>
  48. <div class="select is-medium">
  49. <select
  50. :value="course.category._id"
  51. @change="($event) => emitCourseValue($event, 'category')">
  52. <!-- <option value="default">Select Category</option> -->
  53. <option
  54. v-for="category in categories"
  55. :key="category._id"
  56. :value="category._id"
  57. >{{category.name}}</option>
  58. </select>
  59. </div>
  60. </div>
  61. <div class="field">
  62. <label class="label">Course Image</label>
  63. <div class="columns">
  64. <div class="column">
  65. <figure class="image is-4by2">
  66. <img
  67. :src="course.image">
  68. </figure>
  69. </div>
  70. <div class="column centered">
  71. <div class="control">
  72. <input
  73. :value="course.image"
  74. @input="($event) => emitCourseValue($event, 'image')"
  75. class="input is-medium"
  76. type="text"
  77. placeholder="https://images.unsplash.com/photo-1498837167922-ddd27525d352">
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. <div class="field">
  83. <label class="label">Course Link</label>
  84. <div class="control">
  85. <input
  86. :value="course.productLink"
  87. @input="($event) => emitCourseValue($event, 'productLink')"
  88. class="input is-medium"
  89. type="text"
  90. placeholder="https://www.udemy.com/vue-js-2-the-full-guide-by-real-apps-vuex-router-node">
  91. </div>
  92. </div>
  93. <div class="field">
  94. <label class="label">Course Video Link</label>
  95. <div class="control">
  96. <input
  97. :value="course.promoVideoLink"
  98. @input="($event) => emitCourseValue($event, 'promoVideoLink')"
  99. class="input is-medium"
  100. type="text"
  101. placeholder="https://www.youtube.com/watch?v=WQ9sCAhRh1M">
  102. </div>
  103. </div>
  104. </form>
  105. </div>
  106. </div>
  107. </template>
  108. <script>
  109. import CourseEditor from '~/components/editor/CourseEditor'
  110. export default {
  111. components: {
  112. CourseEditor
  113. },
  114. props: {
  115. course : {
  116. type : Object,
  117. required : true
  118. }
  119. },
  120. computed : {
  121. categories() {
  122. return this.$store.state.category.items
  123. }
  124. },
  125. methods : {
  126. emitCourseValue(e, field){
  127. // const {value} = e.target
  128. const value = e.target ? e.target.value : e
  129. if(field === 'category'){
  130. return this.emitCategory(value, field)
  131. }
  132. this.$emit('courseValueUpdated', {value, field})
  133. },
  134. emitCategory(categoryId, field){
  135. const foundCategory = this.categories.find(c => c._id === categoryId)
  136. this.$emit('courseValueUpdated', {value : foundCategory, field})
  137. }
  138. }
  139. }
  140. </script>