From e460f430a741ef7965d17b9086802bdc059edd2e Mon Sep 17 00:00:00 2001 From: Adam Coldrick <adam@sotk.co.uk> Date: Sat, 9 May 2020 00:17:17 +0100 Subject: [PATCH] Populate the User list view This commit adds a component for an entry in a list of users, and uses it in the user list view. --- src/components/UserListItem.vue | 57 +++++++++++++++++++++++++++++++++ src/views/UserList.vue | 34 ++++++++++++++++++-- 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 src/components/UserListItem.vue diff --git a/src/components/UserListItem.vue b/src/components/UserListItem.vue new file mode 100644 index 0000000..0868ee7 --- /dev/null +++ b/src/components/UserListItem.vue @@ -0,0 +1,57 @@ +<template> + <div class="user"> + <img :src="avatar" /> + <div class="details"> + <router-link :to="`/user/${user.id}`"> + <h2>{{ user.full_name }}</h2> + </router-link> + <p class="metadata">{{ user.email }}</p> + </div> + </div> +</template> + +<script> +import user from '@/api/user.js' + +export default { + name: 'UserListItem', + props: ['user'], + data () { + return { + avatar: '' + } + }, + created () { + this.avatar = user.getAvatarUrl(this.user, 60) + } +} +</script> + +<style lang="scss" scoped> +.user { + display: flex; + align-items: center; + + padding: 20px; + border-top: solid 1px #ddd; + + &:hover { + background-color: #fff; + } + + img { + margin-right: 20px; + border-radius: 100%; + } + + h2 { + margin: 0; + font-weight: 300; + } + + .metadata { + margin: 0; + color: #777; + } +} +</style> diff --git a/src/views/UserList.vue b/src/views/UserList.vue index f2b2300..474636c 100644 --- a/src/views/UserList.vue +++ b/src/views/UserList.vue @@ -1,5 +1,35 @@ <template> - <div class="about"> - <h1>User list here</h1> + <div class="user-list"> + <h1>Users</h1> + <UserListItem v-for="user in users" :key="user.id" :user="user" /> </div> </template> + +<script> +import user from '@/api/user.js' + +import UserListItem from '@/components/UserListItem.vue' + +export default { + name: 'UserListView', + components: { + UserListItem + }, + data () { + return { + users: [] + } + }, + created () { + this.getUsers() + }, + methods: { + async getUsers () { + const params = { + limit: 10 + } + this.users = await user.browse(params) + } + } +} +</script>