Skip to content

Commit

Permalink
add readmode rows
Browse files Browse the repository at this point in the history
Signed-off-by: Greta Doci <gretadoci@gmail.com>
  • Loading branch information
GretaD committed Nov 8, 2019
1 parent 433dd70 commit f0218b0
Show file tree
Hide file tree
Showing 3 changed files with 197 additions and 3 deletions.
1 change: 1 addition & 0 deletions apps/settings/css/settings.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1538,6 +1538,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
}
.toggleUserActions {
position: relative;
display: flex;
.icon-more {
width: 44px;
height: 44px;
Expand Down
35 changes: 32 additions & 3 deletions apps/settings/src/components/UserList/UserRow.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,26 @@
</div>

<!-- User full data -->
<UserRowSimple
v-else-if="!editing"
:generate-avatar="generateAvatar"
:loading="loading"
:show-config="showConfig"
:user="user"
:user-groups="userGroups"
:user-sub-admins-groups="userSubAdminsGroups"
:used-quota="usedQuota"
:user-language="userLanguage"
:user-backend="userBackend"
:user-last-login="userLastLogin"
:user-actions="userActions"
:opened-menu="openedMenu"
:feedback-message="feedbackMessage"
:sub-admins-groups="subAdminsGroups"
:settings="settings"
@hideMenu="hideMenu"
@toggleMenu="toggleMenu"
@edit="editing = true" />
<div v-else
class="row"
:class="{'disabled': loading.delete || loading.disable}"
Expand All @@ -56,7 +76,7 @@
<div class="name">
{{ user.id }}
<div class="displayName">
<form v-if="false"
<form
class="displayName"
:class="{'icon-loading-small': loading.displayName}"
@submit.prevent="updateDisplayName">
Expand All @@ -78,7 +98,6 @@
</template>
<div v-else v-tooltip.auto="t('settings', 'The backend does not support changing the display name')" class="name" />
</form>
{{ user.displayname }}
</div>
</div>
<form v-if="settings.canChangePassword && user.backendCapabilities.setPassword"
Expand Down Expand Up @@ -195,6 +214,11 @@
</div>
<div class="userActions">
<div v-if="OC.currentUser !== user.id && user.id !== 'admin' && !loading.all" class="toggleUserActions">
<Actions>
<ActionButton icon="icon-checkmark" @click="editing = false">
{{ t('settings', 'Save User') }}
</ActionButton>
</Actions>
<div v-click-outside="hideMenu" class="icon-more" @click="toggleMenu" />
<div class="popovermenu" :class="{ 'open': openedMenu }">
<PopoverMenu :menu="userActions" />
Expand All @@ -212,14 +236,18 @@
import ClickOutside from 'vue-click-outside'
import Vue from 'vue'
import VTooltip from 'v-tooltip'
import { PopoverMenu, Multiselect } from 'nextcloud-vue'
import { PopoverMenu, Multiselect, Actions, ActionButton } from 'nextcloud-vue'
import UserRowSimple from './UserRowSimple'
Vue.use(VTooltip)
export default {
name: 'UserRow',
components: {
UserRowSimple,
PopoverMenu,
Actions,
ActionButton,
Multiselect
},
directives: {
Expand Down Expand Up @@ -264,6 +292,7 @@ export default {
rand: parseInt(Math.random() * 1000),
openedMenu: false,
feedbackMessage: '',
editing: false,
loading: {
all: false,
displayName: false,
Expand Down
164 changes: 164 additions & 0 deletions apps/settings/src/components/UserList/UserRowSimple.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
<template>
<div
class="row"
:class="{'disabled': loading.delete || loading.disable}"
:data-id="user.id">
<div class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}">
<img v-if="!loading.delete && !loading.disable && !loading.wipe"
alt=""
width="32"
height="32"
:src="generateAvatar(user.id, 32)"
:srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'">
</div>
<!-- dirty hack to ellipsis on two lines -->
<div class="name">
{{ user.id }}
<div class="displayName">
{{ user.displayname }}
</div>
</div>
<div />
<div class="mailAddress">
{{ user.email }}
</div>
<div class="groups">
{{ userGroupsLabels }}
</div>
<div v-if="subAdminsGroups.length>0 && settings.isAdmin" class="subAdminsGroups">
{{ userSubAdminsGroupsLabels }}
</div>
<div class="quota">
<progress class="quota-user-progress"
:class="{'warn':usedQuota>80}"
:value="usedQuota"
max="100" />
</div>
<div v-if="showConfig.showLanguages" class="languages">
{{ userLanguage.name }}
</div>
<div v-if="showConfig.showStoragePath" class="storageLocation">
{{ user.storageLocation }}
</div>
<div v-if="showConfig.showUserBackend" class="userBackend">
{{ user.backend }}
</div>
<div v-if="showConfig.showLastLogin" class="userLastLogin">
{{ user.lastLogin>0 ? OC.Util.relativeModifiedDate(user.lastLogin) : t('settings','Never') }}
</div>
<div class="userActions">
<div v-if="OC.currentUser !== user.id && user.id !== 'admin' && !loading.all" class="toggleUserActions">
<Actions>
<ActionButton icon="icon-rename" @click="$emit('edit')">
{{ t('settings', 'Edit User') }}
</ActionButton>
</Actions>
<div v-click-outside="hideMenu" class="icon-more" @click="$emit('toggleMenu')" />
<div class="popovermenu" :class="{ 'open': openedMenu }">
<PopoverMenu :menu="userActions" />
</div>
</div>
<div class="feedback" :style="{opacity: feedbackMessage !== '' ? 1 : 0}">
<div class="icon-checkmark" />
{{ feedbackMessage }}
</div>
</div>
</div>
</template>

<script>
import { PopoverMenu, Actions, ActionButton } from 'nextcloud-vue'
import ClickOutside from 'vue-click-outside'
export default {
name: 'UserRowSimple',
components: {
PopoverMenu,
ActionButton,
Actions
},
directives: {
ClickOutside
},
props: {
user: {
type: Object,
required: true
},
loading: {
type: Object,
required: true
},
generateAvatar: {
type: Function,
required: true
},
showConfig: {
type: Object,
required: true
},
userGroups: {
type: Array,
required: true
},
userSubAdminsGroups: {
type: Array,
required: true
},
userLanguage: {
type: Object,
required: true
},
usedQuota: {
type: Number,
required: true
},
userLastLogin: {
type: Object,
required: true
},
userActions: {
type: Array,
required: true
},
openedMenu: {
type: Boolean,
required: true
},
feedbackMessage: {
type: String,
required: true
},
subAdminsGroups: {
type: Array,
required: true
},
settings: {
type: Object,
required: true
}
},
computed: {
userGroupsLabels() {
return this.userGroups
.map((groupObject) => groupObject.name)
.join(', ')
},
userSubAdminsGroupsLabels() {
return this.userSubAdminsGroups
.map((groupObject) => groupObject.name)
.join(', ')
}
},
methods: {
hideMenu() {
this.$emit('hideMenu')
}
}
}
</script>

<style scoped>
</style>

0 comments on commit f0218b0

Please sign in to comment.