From 545e83efb1da11fa435f3aaaa6f6ec0d168cedb8 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Sat, 16 Feb 2019 08:51:35 +0900
Subject: [PATCH] :art:

---
 src/client/app/common/size.ts                 | 18 ++++++
 .../app/common/views/components/user-list.vue | 62 ++++++++++++-------
 src/client/app/init.ts                        |  2 +
 .../mobile/views/components/ui-container.vue  |  3 +
 4 files changed, 64 insertions(+), 21 deletions(-)
 create mode 100644 src/client/app/common/size.ts

diff --git a/src/client/app/common/size.ts b/src/client/app/common/size.ts
new file mode 100644
index 0000000000..6abb305747
--- /dev/null
+++ b/src/client/app/common/size.ts
@@ -0,0 +1,18 @@
+export default {
+	install(Vue) {
+		Vue.directive('size', {
+			inserted(el, binding) {
+				const query = binding.value;
+				const width = el.clientWidth;
+				for (const q of query) {
+					if (q.lt && (width <= q.lt)) {
+						el.classList.add(q.class);
+					}
+					if (q.gt && (width >= q.gt)) {
+						el.classList.add(q.class);
+					}
+				}
+			}
+		});
+	}
+};
diff --git a/src/client/app/common/views/components/user-list.vue b/src/client/app/common/views/components/user-list.vue
index 35569687ba..3147fbe371 100644
--- a/src/client/app/common/views/components/user-list.vue
+++ b/src/client/app/common/views/components/user-list.vue
@@ -1,12 +1,17 @@
 <template>
 <ui-container :body-togglable="true">
 	<template slot="header"><slot></slot></template>
-	<div class="efvhhmdq">
-		<div class="user" v-for="friend in users">
-			<mk-avatar class="avatar" :user="friend"/>
+	<div class="efvhhmdq" v-size="[{ lt: 500, class: 'narrow' }]">
+		<div class="user" v-for="user in users">
+			<mk-avatar class="avatar" :user="user"/>
 			<div class="body">
-				<router-link class="name" :to="friend | userPage" v-user-preview="friend.id"><mk-user-name :user="friend"/></router-link>
-				<p class="username">@{{ friend | acct }}</p>
+				<div class="name">
+					<router-link class="name" :to="user | userPage" v-user-preview="user.id"><mk-user-name :user="user"/></router-link>
+					<p class="username">@{{ user | acct }}</p>
+				</div>
+				<div class="description" v-if="user.description">
+					<mfm :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis" :should-break="false"/>
+				</div>
 			</div>
 		</div>
 	</div>
@@ -32,42 +37,57 @@ export default Vue.extend({
 
 <style lang="stylus" scoped>
 .efvhhmdq
+	&.narrow
+		> .user > .body > .name
+			width 100%
+
+		> .user > .body > .description
+			display none
+
 	> .user
+		display flex
 		padding 16px
 		border-bottom solid 1px var(--faceDivider)
 
 		&:last-child
 			border-bottom none
 
-		&:after
-			content ""
-			display block
-			clear both
-
 		> .avatar
 			display block
-			float left
+			flex-shrink 0
 			margin 0 12px 0 0
 			width 42px
 			height 42px
 			border-radius 8px
 
 		> .body
-			float left
+			display flex
 			width calc(100% - 54px)
 
 			> .name
-				margin 0
-				font-size 16px
-				line-height 24px
-				color var(--text)
+				width 45%
 
-			> .username
-				display block
-				margin 0
-				font-size 15px
-				line-height 16px
+				> .name
+					margin 0
+					font-size 16px
+					line-height 24px
+					color var(--text)
+
+				> .username
+					display block
+					margin 0
+					font-size 15px
+					line-height 16px
+					color var(--text)
+					opacity 0.7
+
+			> .description
+				width 55%
 				color var(--text)
+				line-height 42px
+				white-space nowrap
+				overflow hidden
+				text-overflow ellipsis
 				opacity 0.7
 
 </style>
diff --git a/src/client/app/init.ts b/src/client/app/init.ts
index 710bef8b65..22285aa992 100644
--- a/src/client/app/init.ts
+++ b/src/client/app/init.ts
@@ -11,6 +11,7 @@ import VueI18n from 'vue-i18n';
 import SequentialEntrance from 'vue-sequential-entrance';
 
 import VueHotkey from './common/hotkey';
+import VueSize from './common/size';
 import App from './app.vue';
 import checkForUpdate from './common/scripts/check-for-update';
 import MiOS from './mios';
@@ -291,6 +292,7 @@ Vue.use(VueRouter);
 Vue.use(VAnimateCss);
 Vue.use(VModal);
 Vue.use(VueHotkey);
+Vue.use(VueSize);
 Vue.use(VueI18n);
 Vue.use(SequentialEntrance);
 
diff --git a/src/client/app/mobile/views/components/ui-container.vue b/src/client/app/mobile/views/components/ui-container.vue
index 2dcd83f586..63ca28cbca 100644
--- a/src/client/app/mobile/views/components/ui-container.vue
+++ b/src/client/app/mobile/views/components/ui-container.vue
@@ -46,6 +46,9 @@ export default Vue.extend({
 	box-shadow 0 4px 16px rgba(#000, 0.1)
 	overflow hidden
 
+	& + .ukygtjoj
+		margin-top 16px
+
 	&.naked
 		background transparent !important
 		box-shadow none !important