Re-did cast elements. Renamed CastPersons so Person can be popup comp for person.
This commit is contained in:
		| @@ -1,17 +1,17 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="cast"> |   <div class="cast"> | ||||||
|     <ol class="persons"> |     <ol class="persons"> | ||||||
|       <Person v-for="person in cast" :person="person" /> |       <CastPerson v-for="person in cast" :person="person" :key="person.id" /> | ||||||
|     </ol> |     </ol> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import Person from "src/components/Person"; | import CastPerson from "src/components/CastPerson"; | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   name: "Cast", |   name: "Cast", | ||||||
|   components: { Person }, |   components: { CastPerson }, | ||||||
|   props: { |   props: { | ||||||
|     cast: { |     cast: { | ||||||
|       type: Array, |       type: Array, | ||||||
|   | |||||||
							
								
								
									
										109
									
								
								src/components/CastPerson.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								src/components/CastPerson.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | |||||||
|  | <template> | ||||||
|  |   <li class="card"> | ||||||
|  |     <a @click="openPerson"> | ||||||
|  |       <img class="persons--image" :src="pictureUrl" /> | ||||||
|  |       <p class="name">{{ person.name }}</p> | ||||||
|  |       <p class="meta">{{ person.character }}</p> | ||||||
|  |     </a> | ||||||
|  |   </li> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import { mapActions } from "vuex"; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   name: "Person", | ||||||
|  |   props: { | ||||||
|  |     person: { | ||||||
|  |       type: Object, | ||||||
|  |       required: true | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     ...mapActions("popup", ["open"]), | ||||||
|  |     openPerson() { | ||||||
|  |       const { id } = this.person; | ||||||
|  |       if (id) this.open({ id, type: "person" }); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   computed: { | ||||||
|  |     pictureUrl() { | ||||||
|  |       const { profile_path } = this.person; | ||||||
|  |       if (profile_path) return "https://image.tmdb.org/t/p/w185" + profile_path; | ||||||
|  |  | ||||||
|  |       return ""; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss"> | ||||||
|  | li a p:first-of-type { | ||||||
|  |   padding-top: 10px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | li p { | ||||||
|  |   font-size: 1em; | ||||||
|  |   padding: 0 10px; | ||||||
|  |   margin: 0; | ||||||
|  |   overflow: hidden; | ||||||
|  |   text-overflow: ellipsis; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | li.card { | ||||||
|  |   margin: 10px; | ||||||
|  |   margin-right: 4px; | ||||||
|  |   padding-bottom: 10px; | ||||||
|  |   border-radius: 8px; | ||||||
|  |   overflow: hidden; | ||||||
|  |  | ||||||
|  |   min-width: 140px; | ||||||
|  |   width: 140px; | ||||||
|  |   background-color: var(--background-color-secondary); | ||||||
|  |   color: var(--text-color); | ||||||
|  |  | ||||||
|  |   transition: all 0.3s ease; | ||||||
|  |   transform: scale(0.97) translateZ(0); | ||||||
|  |  | ||||||
|  |   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | ||||||
|  |  | ||||||
|  |   &:first-of-type { | ||||||
|  |     margin-left: 0; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   &:hover { | ||||||
|  |     box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); | ||||||
|  |     transform: scale(1.03); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .name { | ||||||
|  |     font-weight: 500; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .character { | ||||||
|  |     font-size: 0.9em; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .meta { | ||||||
|  |     font-size: 0.9em; | ||||||
|  |     color: var(--text-color-70); | ||||||
|  |     display: -webkit-box; | ||||||
|  |     overflow: hidden; | ||||||
|  |     -webkit-line-clamp: 1; | ||||||
|  |     -webkit-box-orient: vertical; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   a { | ||||||
|  |     display: block; | ||||||
|  |     text-decoration: none; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   img { | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |     min-width: 140px; | ||||||
|  |     min-height: 210px; | ||||||
|  |     background-color: var(--text-color-90); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
		Reference in New Issue
	
	Block a user