display username below slug when there is no date-time

This commit is contained in:
Alina Beck 2020-01-21 17:00:20 +03:00
parent d20421cb70
commit e93332b173
2 changed files with 52 additions and 32 deletions

View File

@ -56,13 +56,21 @@ export const user = {
storiesOf('UserTeaser', module) storiesOf('UserTeaser', module)
.addDecorator(withA11y) .addDecorator(withA11y)
.addDecorator(helpers.layout) .addDecorator(helpers.layout)
.add('available', () => ({ .add('user only', () => ({
components: { UserTeaser }, components: { UserTeaser },
store: helpers.store, store: helpers.store,
data: () => ({ data: () => ({
user, user,
}), }),
template: '<user-teaser :user="user" :trunc="35" :date-time="new Date()" />', template: '<user-teaser :user="user" />',
}))
.add('with Date', () => ({
components: { UserTeaser },
store: helpers.store,
data: () => ({
user,
}),
template: '<user-teaser :user="user" :date-time="new Date()" />',
})) }))
.add('has edited something', () => ({ .add('has edited something', () => ({
components: { UserTeaser }, components: { UserTeaser },
@ -71,7 +79,7 @@ storiesOf('UserTeaser', module)
user, user,
}), }),
template: ` template: `
<user-teaser :user="user" :trunc="35" :date-time="new Date()"> <user-teaser :user="user" :date-time="new Date()">
<template v-slot:dateTime> <template v-slot:dateTime>
- HEY! I'm edited - HEY! I'm edited
</template> </template>
@ -84,5 +92,5 @@ storiesOf('UserTeaser', module)
data: () => ({ data: () => ({
user: null, user: null,
}), }),
template: '<user-teaser :user="user" :trunc="35" :date-time="new Date()" />', template: '<user-teaser :user="user" :date-time="new Date()" />',
})) }))

View File

@ -1,9 +1,14 @@
<template> <template>
<div class="user-teaser" v-if="displayAnonymous"> <div class="user-teaser" v-if="displayAnonymous">
<user-avatar v-if="showAvatar" /> <user-avatar v-if="showAvatar" />
<span class="username">{{ $t('profile.userAnonym') }}</span> <span class="info anonymous">{{ $t('profile.userAnonym') }}</span>
</div> </div>
<dropdown v-else :class="{ 'disabled-content': user.disabled }" placement="top-start" offset="0"> <dropdown
v-else
:class="[{ 'disabled-content': user.disabled }]"
placement="top-start"
offset="0"
>
<template #default="{ openMenu, closeMenu, isOpen }"> <template #default="{ openMenu, closeMenu, isOpen }">
<nuxt-link <nuxt-link
:to="userLink" :to="userLink"
@ -12,18 +17,17 @@
@mouseleave.native="closeMenu(true)" @mouseleave.native="closeMenu(true)"
> >
<user-avatar v-if="showAvatar" :user="user" size="small" /> <user-avatar v-if="showAvatar" :user="user" size="small" />
<div class="user-info"> <div class="info">
<span class="user-slug"> <span class="text">
{{ userSlug }} <span class="slug">{{ userSlug }}</span>
<span class="username">{{ userName | truncate(18) }}</span> <span v-if="dateTime">{{ userName }}</span>
</span> </span>
<ds-text class="date-time" align="left" size="small" color="soft"> <span v-if="dateTime" class="text">
<template v-if="dateTime">
<base-icon name="clock" /> <base-icon name="clock" />
<hc-relative-date-time :date-time="dateTime" /> <hc-relative-date-time :date-time="dateTime" />
<slot name="dateTime"></slot> <slot name="dateTime"></slot>
</template> </span>
</ds-text> <span v-else class="text">{{ userName }}</span>
</div> </div>
</nuxt-link> </nuxt-link>
</template> </template>
@ -104,7 +108,6 @@ export default {
props: { props: {
user: { type: Object, default: null }, user: { type: Object, default: null },
showAvatar: { type: Boolean, default: true }, showAvatar: { type: Boolean, default: true },
trunc: { type: Number, default: 18 }, // "-1" is no trunc
dateTime: { type: [Date, String], default: null }, dateTime: { type: [Date, String], default: null },
showPopover: { type: Boolean, default: true }, showPopover: { type: Boolean, default: true },
}, },
@ -162,27 +165,36 @@ export default {
flex-shrink: 0; flex-shrink: 0;
} }
> .user-info { > .info {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
overflow: hidden; padding-left: $space-xx-small;
> .ds-text {
display: flex;
margin: 0 0 $space-xxx-small $space-xx-small;
}
> .user-slug {
margin: 0 0 $space-xxx-small $space-xx-small;
white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} white-space: nowrap;
}
.username {
color: $text-color-soft; color: $text-color-soft;
font-size: $font-size-small; font-size: $font-size-small;
&.anonymous {
font-size: $font-size-base;
}
.slug {
color: $color-primary;
font-size: $font-size-base;
}
}
.text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
> .ds-text {
display: inline;
}
} }
} }
</style> </style>