This commit is contained in:
こぴなたみぽ
2018-02-07 18:34:43 +09:00
parent 063193f429
commit fb7e9310bf
101 changed files with 534 additions and 525 deletions

View File

@@ -1,9 +1,9 @@
<mk-drive-selector>
<div class="body">
<header>
<h1>%i18n:mobile.tags.mk-drive-selector.select-file%<span class="count" if={ files.length > 0 }>({ files.length })</span></h1>
<h1>%i18n:mobile.tags.mk-drive-selector.select-file%<span class="count" v-if="files.length > 0">({ files.length })</span></h1>
<button class="close" @click="cancel">%fa:times%</button>
<button if={ opts.multiple } class="ok" @click="ok">%fa:check%</button>
<button v-if="opts.multiple" class="ok" @click="ok">%fa:check%</button>
</header>
<mk-drive ref="browser" select-file={ true } multiple={ opts.multiple }/>
</div>

View File

@@ -5,52 +5,52 @@
<span>%fa:angle-right%</span>
<a @click="move" href="/i/drive/folder/{ folder.id }">{ folder.name }</a>
</virtual>
<virtual if={ folder != null }>
<virtual v-if="folder != null">
<span>%fa:angle-right%</span>
<p>{ folder.name }</p>
</virtual>
<virtual if={ file != null }>
<virtual v-if="file != null">
<span>%fa:angle-right%</span>
<p>{ file.name }</p>
</virtual>
</nav>
<mk-uploader ref="uploader"/>
<div class="browser { fetching: fetching }" if={ file == null }>
<div class="info" if={ info }>
<p if={ folder == null }>{ (info.usage / info.capacity * 100).toFixed(1) }% %i18n:mobile.tags.mk-drive.used%</p>
<p if={ folder != null && (folder.folders_count > 0 || folder.files_count > 0) }>
<virtual if={ folder.folders_count > 0 }>{ folder.folders_count } %i18n:mobile.tags.mk-drive.folder-count%</virtual>
<virtual if={ folder.folders_count > 0 && folder.files_count > 0 }>%i18n:mobile.tags.mk-drive.count-separator%</virtual>
<virtual if={ folder.files_count > 0 }>{ folder.files_count } %i18n:mobile.tags.mk-drive.file-count%</virtual>
<div class="browser { fetching: fetching }" v-if="file == null">
<div class="info" v-if="info">
<p v-if="folder == null">{ (info.usage / info.capacity * 100).toFixed(1) }% %i18n:mobile.tags.mk-drive.used%</p>
<p v-if="folder != null && (folder.folders_count > 0 || folder.files_count > 0)">
<virtual v-if="folder.folders_count > 0">{ folder.folders_count } %i18n:mobile.tags.mk-drive.folder-count%</virtual>
<virtual v-if="folder.folders_count > 0 && folder.files_count > 0">%i18n:mobile.tags.mk-drive.count-separator%</virtual>
<virtual v-if="folder.files_count > 0">{ folder.files_count } %i18n:mobile.tags.mk-drive.file-count%</virtual>
</p>
</div>
<div class="folders" if={ folders.length > 0 }>
<div class="folders" v-if="folders.length > 0">
<virtual each={ folder in folders }>
<mk-drive-folder folder={ folder }/>
</virtual>
<p if={ moreFolders }>%i18n:mobile.tags.mk-drive.load-more%</p>
<p v-if="moreFolders">%i18n:mobile.tags.mk-drive.load-more%</p>
</div>
<div class="files" if={ files.length > 0 }>
<div class="files" v-if="files.length > 0">
<virtual each={ file in files }>
<mk-drive-file file={ file }/>
</virtual>
<button class="more" if={ moreFiles } @click="fetchMoreFiles">
<button class="more" v-if="moreFiles" @click="fetchMoreFiles">
{ fetchingMoreFiles ? '%i18n:common.loading%' : '%i18n:mobile.tags.mk-drive.load-more%' }
</button>
</div>
<div class="empty" if={ files.length == 0 && folders.length == 0 && !fetching }>
<p if={ folder == null }>%i18n:mobile.tags.mk-drive.nothing-in-drive%</p>
<p if={ folder != null }>%i18n:mobile.tags.mk-drive.folder-is-empty%</p>
<div class="empty" v-if="files.length == 0 && folders.length == 0 && !fetching">
<p v-if="folder == null">%i18n:mobile.tags.mk-drive.nothing-in-drive%</p>
<p v-if="folder != null">%i18n:mobile.tags.mk-drive.folder-is-empty%</p>
</div>
</div>
<div class="fetching" if={ fetching && file == null && files.length == 0 && folders.length == 0 }>
<div class="fetching" v-if="fetching && file == null && files.length == 0 && folders.length == 0">
<div class="spinner">
<div class="dot1"></div>
<div class="dot2"></div>
</div>
</div>
<input ref="file" type="file" multiple="multiple" onchange={ changeLocalFile }/>
<mk-drive-file-viewer if={ file != null } file={ file }/>
<mk-drive-file-viewer v-if="file != null" file={ file }/>
<style lang="stylus" scoped>
:scope
display block

View File

@@ -1,13 +1,13 @@
<mk-drive-file-viewer>
<div class="preview">
<img if={ kind == 'image' } ref="img"
<img v-if="kind == 'image'" ref="img"
src={ file.url }
alt={ file.name }
title={ file.name }
onload={ onImageLoaded }
style="background-color:rgb({ file.properties.average_color.join(',') })">
<virtual if={ kind != 'image' }>%fa:file%</virtual>
<footer if={ kind == 'image' && file.properties && file.properties.width && file.properties.height }>
<virtual v-if="kind != 'image'">%fa:file%</virtual>
<footer v-if="kind == 'image' && file.properties && file.properties.width && file.properties.height">
<span class="size">
<span class="width">{ file.properties.width }</span>
<span class="time">×</span>

View File

@@ -3,7 +3,7 @@
<div class="container">
<div class="thumbnail" style={ thumbnail }></div>
<div class="body">
<p class="name"><span>{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }</span><span class="ext" if={ file.name.lastIndexOf('.') != -1 }>{ file.name.substr(file.name.lastIndexOf('.')) }</span></p>
<p class="name"><span>{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }</span><span class="ext" v-if="file.name.lastIndexOf('.') != -1">{ file.name.substr(file.name.lastIndexOf('.')) }</span></p>
<!--
if file.tags.length > 0
ul.tags

View File

@@ -1,10 +1,10 @@
<mk-follow-button>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } @click="onclick" disabled={ wait }>
<virtual if={ !wait && user.is_following }>%fa:minus%</virtual>
<virtual if={ !wait && !user.is_following }>%fa:plus%</virtual>
<virtual if={ wait }>%fa:spinner .pulse .fw%</virtual>{ user.is_following ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait }>
<virtual v-if="!wait && user.is_following">%fa:minus%</virtual>
<virtual v-if="!wait && !user.is_following">%fa:plus%</virtual>
<virtual v-if="wait">%fa:spinner .pulse .fw%</virtual>{ user.is_following ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }
</button>
<div class="init" if={ init }>%fa:spinner .pulse .fw%</div>
<div class="init" v-if="init">%fa:spinner .pulse .fw%</div>
<style lang="stylus" scoped>
:scope
display block

View File

@@ -1,5 +1,5 @@
<mk-home-timeline>
<mk-init-following if={ noFollowing } />
<mk-init-following v-if="noFollowing" />
<mk-timeline ref="timeline" init={ init } more={ more } empty={ '%i18n:mobile.tags.mk-home-timeline.empty-timeline%' }/>
<style lang="stylus" scoped>
:scope

View File

@@ -1,12 +1,12 @@
<mk-init-following>
<p class="title">気になるユーザーをフォロー:</p>
<div class="users" if={ !fetching && users.length > 0 }>
<div class="users" v-if="!fetching && users.length > 0">
<virtual each={ users }>
<mk-user-card user={ this } />
</virtual>
</div>
<p class="empty" if={ !fetching && users.length == 0 }>おすすめのユーザーは見つかりませんでした。</p>
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
<p class="empty" v-if="!fetching && users.length == 0">おすすめのユーザーは見つかりませんでした。</p>
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
<a class="refresh" @click="refresh">もっと見る</a>
<button class="close" @click="close" title="閉じる">%fa:times%</button>
<style lang="stylus" scoped>

View File

@@ -1,46 +1,46 @@
<mk-notification-preview class={ notification.type }>
<virtual if={ notification.type == 'reaction' }>
<virtual v-if="notification.type == 'reaction'">
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p><mk-reaction-icon reaction={ notification.reaction }/>{ notification.user.name }</p>
<p class="post-ref">%fa:quote-left%{ getPostSummary(notification.post) }%fa:quote-right%</p>
</div>
</virtual>
<virtual if={ notification.type == 'repost' }>
<virtual v-if="notification.type == 'repost'">
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:retweet%{ notification.post.user.name }</p>
<p class="post-ref">%fa:quote-left%{ getPostSummary(notification.post.repost) }%fa:quote-right%</p>
</div>
</virtual>
<virtual if={ notification.type == 'quote' }>
<virtual v-if="notification.type == 'quote'">
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:quote-left%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'follow' }>
<virtual v-if="notification.type == 'follow'">
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:user-plus%{ notification.user.name }</p>
</div>
</virtual>
<virtual if={ notification.type == 'reply' }>
<virtual v-if="notification.type == 'reply'">
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:reply%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'mention' }>
<virtual v-if="notification.type == 'mention'">
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:at%{ notification.post.user.name }</p>
<p class="post-preview">{ getPostSummary(notification.post) }</p>
</div>
</virtual>
<virtual if={ notification.type == 'poll_vote' }>
<virtual v-if="notification.type == 'poll_vote'">
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
<div class="text">
<p>%fa:chart-pie%{ notification.user.name }</p>

View File

@@ -1,6 +1,6 @@
<mk-notification class={ notification.type }>
<mk-time time={ notification.created_at }/>
<virtual if={ notification.type == 'reaction' }>
<virtual v-if="notification.type == 'reaction'">
<a class="avatar-anchor" href={ '/' + notification.user.username }>
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -14,7 +14,7 @@
</a>
</div>
</virtual>
<virtual if={ notification.type == 'repost' }>
<virtual v-if="notification.type == 'repost'">
<a class="avatar-anchor" href={ '/' + notification.post.user.username }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -28,7 +28,7 @@
</a>
</div>
</virtual>
<virtual if={ notification.type == 'quote' }>
<virtual v-if="notification.type == 'quote'">
<a class="avatar-anchor" href={ '/' + notification.post.user.username }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -40,7 +40,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'follow' }>
<virtual v-if="notification.type == 'follow'">
<a class="avatar-anchor" href={ '/' + notification.user.username }>
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -51,7 +51,7 @@
</p>
</div>
</virtual>
<virtual if={ notification.type == 'reply' }>
<virtual v-if="notification.type == 'reply'">
<a class="avatar-anchor" href={ '/' + notification.post.user.username }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -63,7 +63,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'mention' }>
<virtual v-if="notification.type == 'mention'">
<a class="avatar-anchor" href={ '/' + notification.post.user.username }>
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>
@@ -75,7 +75,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div>
</virtual>
<virtual if={ notification.type == 'poll_vote' }>
<virtual v-if="notification.type == 'poll_vote'">
<a class="avatar-anchor" href={ '/' + notification.user.username }>
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</a>

View File

@@ -1,15 +1,15 @@
<mk-notifications>
<div class="notifications" if={ notifications.length != 0 }>
<div class="notifications" v-if="notifications.length != 0">
<virtual each={ notification, i in notifications }>
<mk-notification notification={ notification }/>
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span>%fa:angle-up%{ notification._datetext }</span><span>%fa:angle-down%{ notifications[i + 1]._datetext }</span></p>
<p class="date" v-if="i != notifications.length - 1 && notification._date != notifications[i + 1]._date"><span>%fa:angle-up%{ notification._datetext }</span><span>%fa:angle-down%{ notifications[i + 1]._datetext }</span></p>
</virtual>
</div>
<button class="more" if={ moreNotifications } @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }>
<virtual if={ fetchingMoreNotifications }>%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:mobile.tags.mk-notifications.more%' }
<button class="more" v-if="moreNotifications" @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }>
<virtual v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:mobile.tags.mk-notifications.more%' }
</button>
<p class="empty" if={ notifications.length == 0 && !loading }>%i18n:mobile.tags.mk-notifications.empty%</p>
<p class="loading" if={ loading }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<p class="empty" v-if="notifications.length == 0 && !loading">%i18n:mobile.tags.mk-notifications.empty%</p>
<p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped>
:scope
display block

View File

@@ -1,8 +1,8 @@
<mk-entrance>
<main><img src="/assets/title.svg" alt="Misskey"/>
<mk-entrance-signin if={ mode == 'signin' }/>
<mk-entrance-signup if={ mode == 'signup' }/>
<div class="introduction" if={ mode == 'introduction' }>
<mk-entrance-signin v-if="mode == 'signin'"/>
<mk-entrance-signup v-if="mode == 'signup'"/>
<div class="introduction" v-if="mode == 'introduction'">
<mk-introduction/>
<button @click="signin">%i18n:common.ok%</button>
</div>

View File

@@ -1,6 +1,6 @@
<mk-messaging-room-page>
<mk-ui ref="ui">
<mk-messaging-room if={ !parent.fetching } user={ parent.user } is-naked={ true }/>
<mk-messaging-room v-if="!parent.fetching" user={ parent.user } is-naked={ true }/>
</mk-ui>
<style lang="stylus" scoped>
:scope

View File

@@ -1,11 +1,11 @@
<mk-post-page>
<mk-ui ref="ui">
<main if={ !parent.fetching }>
<a if={ parent.post.next } href={ parent.post.next }>%fa:angle-up%%i18n:mobile.tags.mk-post-page.next%</a>
<main v-if="!parent.fetching">
<a v-if="parent.post.next" href={ parent.post.next }>%fa:angle-up%%i18n:mobile.tags.mk-post-page.next%</a>
<div>
<mk-post-detail ref="post" post={ parent.post }/>
</div>
<a if={ parent.post.prev } href={ parent.post.prev }>%fa:angle-down%%i18n:mobile.tags.mk-post-page.prev%</a>
<a v-if="parent.post.prev" href={ parent.post.prev }>%fa:angle-down%%i18n:mobile.tags.mk-post-page.prev%</a>
</main>
</mk-ui>
<style lang="stylus" scoped>

View File

@@ -1,8 +1,8 @@
<mk-selectdrive-page>
<header>
<h1>%i18n:mobile.tags.mk-selectdrive-page.select-file%<span class="count" if={ files.length > 0 }>({ files.length })</span></h1>
<h1>%i18n:mobile.tags.mk-selectdrive-page.select-file%<span class="count" v-if="files.length > 0">({ files.length })</span></h1>
<button class="upload" @click="upload">%fa:upload%</button>
<button if={ multiple } class="ok" @click="ok">%fa:check%</button>
<button v-if="multiple" class="ok" @click="ok">%fa:check%</button>
</header>
<mk-drive ref="browser" select-file={ true } multiple={ multiple } is-naked={ true } top={ 42 }/>

View File

@@ -1,6 +1,6 @@
<mk-user-followers-page>
<mk-ui ref="ui">
<mk-user-followers ref="list" if={ !parent.fetching } user={ parent.user }/>
<mk-user-followers ref="list" v-if="!parent.fetching" user={ parent.user }/>
</mk-ui>
<style lang="stylus" scoped>
:scope

View File

@@ -1,6 +1,6 @@
<mk-user-following-page>
<mk-ui ref="ui">
<mk-user-following ref="list" if={ !parent.fetching } user={ parent.user }/>
<mk-user-following ref="list" v-if="!parent.fetching" user={ parent.user }/>
</mk-ui>
<style lang="stylus" scoped>
:scope

View File

@@ -1,17 +1,17 @@
<mk-post-detail>
<button class="read-more" if={ p.reply && p.reply.reply_id && context == null } @click="loadContext" disabled={ loadingContext }>
<virtual if={ !contextFetching }>%fa:ellipsis-v%</virtual>
<virtual if={ contextFetching }>%fa:spinner .pulse%</virtual>
<button class="read-more" v-if="p.reply && p.reply.reply_id && context == null" @click="loadContext" disabled={ loadingContext }>
<virtual v-if="!contextFetching">%fa:ellipsis-v%</virtual>
<virtual v-if="contextFetching">%fa:spinner .pulse%</virtual>
</button>
<div class="context">
<virtual each={ post in context }>
<mk-post-detail-sub post={ post }/>
</virtual>
</div>
<div class="reply-to" if={ p.reply }>
<div class="reply-to" v-if="p.reply">
<mk-post-detail-sub post={ p.reply }/>
</div>
<div class="repost" if={ isRepost }>
<div class="repost" v-if="isRepost">
<p>
<a class="avatar-anchor" href={ '/' + post.user.username }>
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/></a>
@@ -33,10 +33,10 @@
</header>
<div class="body">
<div class="text" ref="text"></div>
<div class="media" if={ p.media }>
<div class="media" v-if="p.media">
<mk-images images={ p.media }/>
</div>
<mk-poll if={ p.poll } post={ p }/>
<mk-poll v-if="p.poll" post={ p }/>
</div>
<a class="time" href={ '/' + p.user.username + '/' + p.id }>
<mk-time time={ p.created_at } mode="detail"/>
@@ -44,20 +44,20 @@
<footer>
<mk-reactions-viewer post={ p }/>
<button @click="reply" title="%i18n:mobile.tags.mk-post-detail.reply%">
%fa:reply%<p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
%fa:reply%<p class="count" v-if="p.replies_count > 0">{ p.replies_count }</p>
</button>
<button @click="repost" title="Repost">
%fa:retweet%<p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{ p.repost_count }</p>
</button>
<button class={ reacted: p.my_reaction != null } @click="react" ref="reactButton" title="%i18n:mobile.tags.mk-post-detail.reaction%">
%fa:plus%<p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{ p.reactions_count }</p>
</button>
<button @click="menu" ref="menuButton">
%fa:ellipsis-h%
</button>
</footer>
</article>
<div class="replies" if={ !compact }>
<div class="replies" v-if="!compact">
<virtual each={ post in replies }>
<mk-post-detail-sub post={ post }/>
</virtual>

View File

@@ -2,12 +2,12 @@
<header>
<button class="cancel" @click="cancel">%fa:times%</button>
<div>
<span if={ refs.text } class="text-count { over: refs.text.value.length > 1000 }">{ 1000 - refs.text.value.length }</span>
<span v-if="refs.text" class="text-count { over: refs.text.value.length > 1000 }">{ 1000 - refs.text.value.length }</span>
<button class="submit" @click="post">%i18n:mobile.tags.mk-post-form.submit%</button>
</div>
</header>
<div class="form">
<mk-post-preview if={ opts.reply } post={ opts.reply }/>
<mk-post-preview v-if="opts.reply" post={ opts.reply }/>
<textarea ref="text" disabled={ wait } oninput={ update } onkeydown={ onkeydown } onpaste={ onpaste } placeholder={ opts.reply ? '%i18n:mobile.tags.mk-post-form.reply-placeholder%' : '%i18n:mobile.tags.mk-post-form.post-placeholder%' }></textarea>
<div class="attaches" show={ files.length != 0 }>
<ul class="files" ref="attaches">
@@ -16,7 +16,7 @@
</li>
</ul>
</div>
<mk-poll-editor if={ poll } ref="poll" ondestroy={ onPollDestroyed }/>
<mk-poll-editor v-if="poll" ref="poll" ondestroy={ onPollDestroyed }/>
<mk-uploader ref="uploader"/>
<button ref="upload" @click="selectFile">%fa:upload%</button>
<button ref="drive" @click="selectFileFromDrive">%fa:cloud%</button>

View File

@@ -1,10 +1,10 @@
<mk-sub-post-content>
<div class="body"><a class="reply" if={ post.reply_id }>%fa:reply%</a><span ref="text"></span><a class="quote" if={ post.repost_id } href={ '/post:' + post.repost_id }>RP: ...</a></div>
<details if={ post.media }>
<div class="body"><a class="reply" v-if="post.reply_id">%fa:reply%</a><span ref="text"></span><a class="quote" v-if="post.repost_id" href={ '/post:' + post.repost_id }>RP: ...</a></div>
<details v-if="post.media">
<summary>({ post.media.length }個のメディア)</summary>
<mk-images images={ post.media }/>
</details>
<details if={ post.poll }>
<details v-if="post.poll">
<summary>%i18n:mobile.tags.mk-sub-post-content.poll%</summary>
<mk-poll post={ post }/>
</details>

View File

@@ -1,21 +1,21 @@
<mk-timeline>
<div class="init" if={ init }>
<div class="init" v-if="init">
%fa:spinner .pulse%%i18n:common.loading%
</div>
<div class="empty" if={ !init && posts.length == 0 }>
<div class="empty" v-if="!init && posts.length == 0">
%fa:R comments%{ opts.empty || '%i18n:mobile.tags.mk-timeline.empty%' }
</div>
<virtual each={ post, i in posts }>
<mk-timeline-post post={ post }/>
<p class="date" if={ i != posts.length - 1 && post._date != posts[i + 1]._date }>
<p class="date" v-if="i != posts.length - 1 && post._date != posts[i + 1]._date">
<span>%fa:angle-up%{ post._datetext }</span>
<span>%fa:angle-down%{ posts[i + 1]._datetext }</span>
</p>
</virtual>
<footer if={ !init }>
<button if={ canFetchMore } @click="more" disabled={ fetching }>
<span if={ !fetching }>%i18n:mobile.tags.mk-timeline.load-more%</span>
<span if={ fetching }>%i18n:common.loading%<mk-ellipsis/></span>
<footer v-if="!init">
<button v-if="canFetchMore" @click="more" disabled={ fetching }>
<span v-if="!fetching">%i18n:mobile.tags.mk-timeline.load-more%</span>
<span v-if="fetching">%i18n:common.loading%<mk-ellipsis/></span>
</button>
</footer>
<style lang="stylus" scoped>
@@ -137,10 +137,10 @@
</mk-timeline>
<mk-timeline-post class={ repost: isRepost }>
<div class="reply-to" if={ p.reply }>
<div class="reply-to" v-if="p.reply">
<mk-timeline-post-sub post={ p.reply }/>
</div>
<div class="repost" if={ isRepost }>
<div class="repost" v-if="isRepost">
<p>
<a class="avatar-anchor" href={ '/' + post.user.username }>
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
@@ -156,7 +156,7 @@
<div class="main">
<header>
<a class="name" href={ '/' + p.user.username }>{ p.user.name }</a>
<span class="is-bot" if={ p.user.is_bot }>bot</span>
<span class="is-bot" v-if="p.user.is_bot">bot</span>
<span class="username">@{ p.user.username }</span>
<a class="created-at" href={ url }>
<mk-time time={ p.created_at }/>
@@ -164,32 +164,32 @@
</header>
<div class="body">
<div class="text" ref="text">
<p class="channel" if={ p.channel != null }><a href={ _CH_URL_ + '/' + p.channel.id } target="_blank">{ p.channel.title }</a>:</p>
<a class="reply" if={ p.reply }>
<p class="channel" v-if="p.channel != null"><a href={ _CH_URL_ + '/' + p.channel.id } target="_blank">{ p.channel.title }</a>:</p>
<a class="reply" v-if="p.reply">
%fa:reply%
</a>
<p class="dummy"></p>
<a class="quote" if={ p.repost != null }>RP:</a>
<a class="quote" v-if="p.repost != null">RP:</a>
</div>
<div class="media" if={ p.media }>
<div class="media" v-if="p.media">
<mk-images images={ p.media }/>
</div>
<mk-poll if={ p.poll } post={ p } ref="pollViewer"/>
<span class="app" if={ p.app }>via <b>{ p.app.name }</b></span>
<div class="repost" if={ p.repost }>%fa:quote-right -flip-h%
<mk-poll v-if="p.poll" post={ p } ref="pollViewer"/>
<span class="app" v-if="p.app">via <b>{ p.app.name }</b></span>
<div class="repost" v-if="p.repost">%fa:quote-right -flip-h%
<mk-post-preview class="repost" post={ p.repost }/>
</div>
</div>
<footer>
<mk-reactions-viewer post={ p } ref="reactionsViewer"/>
<button @click="reply">
%fa:reply%<p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p>
%fa:reply%<p class="count" v-if="p.replies_count > 0">{ p.replies_count }</p>
</button>
<button @click="repost" title="Repost">
%fa:retweet%<p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p>
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{ p.repost_count }</p>
</button>
<button class={ reacted: p.my_reaction != null } @click="react" ref="reactButton">
%fa:plus%<p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p>
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{ p.reactions_count }</p>
</button>
<button class="menu" @click="menu" ref="menuButton">
%fa:ellipsis-h%

View File

@@ -4,7 +4,7 @@
<div class="content">
<yield />
</div>
<mk-stream-indicator if={ SIGNIN }/>
<mk-stream-indicator v-if="SIGNIN"/>
<style lang="stylus" scoped>
:scope
display block
@@ -53,9 +53,9 @@
<div class="backdrop"></div>
<div class="content">
<button class="nav" @click="parent.toggleDrawer">%fa:bars%</button>
<virtual if={ hasUnreadNotifications || hasUnreadMessagingMessages }>%fa:circle%</virtual>
<virtual v-if="hasUnreadNotifications || hasUnreadMessagingMessages">%fa:circle%</virtual>
<h1 ref="title">Misskey</h1>
<button if={ func } @click="func"><mk-raw content={ funcIcon }/></button>
<button v-if="func" @click="func"><mk-raw content={ funcIcon }/></button>
</div>
</div>
<style lang="stylus" scoped>
@@ -227,15 +227,15 @@
<mk-ui-nav>
<div class="backdrop" @click="parent.toggleDrawer"></div>
<div class="body">
<a class="me" if={ SIGNIN } href={ '/' + I.username }>
<a class="me" v-if="SIGNIN" href={ '/' + I.username }>
<img class="avatar" src={ I.avatar_url + '?thumbnail&size=128' } alt="avatar"/>
<p class="name">{ I.name }</p>
</a>
<div class="links">
<ul>
<li><a href="/">%fa:home%%i18n:mobile.tags.mk-ui-nav.home%%fa:angle-right%</a></li>
<li><a href="/i/notifications">%fa:R bell%%i18n:mobile.tags.mk-ui-nav.notifications%<virtual if={ hasUnreadNotifications }>%fa:circle%</virtual>%fa:angle-right%</a></li>
<li><a href="/i/messaging">%fa:R comments%%i18n:mobile.tags.mk-ui-nav.messaging%<virtual if={ hasUnreadMessagingMessages }>%fa:circle%</virtual>%fa:angle-right%</a></li>
<li><a href="/i/notifications">%fa:R bell%%i18n:mobile.tags.mk-ui-nav.notifications%<virtual v-if="hasUnreadNotifications">%fa:circle%</virtual>%fa:angle-right%</a></li>
<li><a href="/i/messaging">%fa:R comments%%i18n:mobile.tags.mk-ui-nav.messaging%<virtual v-if="hasUnreadMessagingMessages">%fa:circle%</virtual>%fa:angle-right%</a></li>
</ul>
<ul>
<li><a href={ _CH_URL_ } target="_blank">%fa:tv%%i18n:mobile.tags.mk-ui-nav.ch%%fa:angle-right%</a></li>

View File

@@ -1,5 +1,5 @@
<mk-user>
<div class="user" if={ !fetching }>
<div class="user" v-if="!fetching">
<header>
<div class="banner" style={ user.banner_url ? 'background-image: url(' + user.banner_url + '?thumbnail&size=1024)' : '' }></div>
<div class="body">
@@ -7,19 +7,19 @@
<a class="avatar">
<img src={ user.avatar_url + '?thumbnail&size=200' } alt="avatar"/>
</a>
<mk-follow-button if={ SIGNIN && I.id != user.id } user={ user }/>
<mk-follow-button v-if="SIGNIN && I.id != user.id" user={ user }/>
</div>
<div class="title">
<h1>{ user.name }</h1>
<span class="username">@{ user.username }</span>
<span class="followed" if={ user.is_followed }>%i18n:mobile.tags.mk-user.follows-you%</span>
<span class="followed" v-if="user.is_followed">%i18n:mobile.tags.mk-user.follows-you%</span>
</div>
<div class="description">{ user.description }</div>
<div class="info">
<p class="location" if={ user.profile.location }>
<p class="location" v-if="user.profile.location">
%fa:map-marker%{ user.profile.location }
</p>
<p class="birthday" if={ user.profile.birthday }>
<p class="birthday" v-if="user.profile.birthday">
%fa:birthday-cake%{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)
</p>
</div>
@@ -45,9 +45,9 @@
</nav>
</header>
<div class="body">
<mk-user-overview if={ page == 'overview' } user={ user }/>
<mk-user-timeline if={ page == 'posts' } user={ user }/>
<mk-user-timeline if={ page == 'media' } user={ user } with-media={ true }/>
<mk-user-overview v-if="page == 'overview'" user={ user }/>
<mk-user-timeline v-if="page == 'posts'" user={ user }/>
<mk-user-timeline v-if="page == 'media'" user={ user } with-media={ true }/>
</div>
</div>
<style lang="stylus" scoped>
@@ -215,7 +215,7 @@
</mk-user>
<mk-user-overview>
<mk-post-detail if={ user.pinned_post } post={ user.pinned_post } compact={ true }/>
<mk-post-detail v-if="user.pinned_post" post={ user.pinned_post } compact={ true }/>
<section class="recent-posts">
<h2>%fa:R comments%%i18n:mobile.tags.mk-user-overview.recent-posts%</h2>
<div>
@@ -252,7 +252,7 @@
<mk-user-overview-frequently-replied-users user={ user }/>
</div>
</section>
<section class="followers-you-know" if={ SIGNIN && I.id !== user.id }>
<section class="followers-you-know" v-if="SIGNIN && I.id !== user.id">
<h2>%fa:users%%i18n:mobile.tags.mk-user-overview.followers-you-know%</h2>
<div>
<mk-user-overview-followers-you-know user={ user }/>
@@ -307,13 +307,13 @@
</mk-user-overview>
<mk-user-overview-posts>
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-posts.loading%<mk-ellipsis/></p>
<div if={ !initializing && posts.length > 0 }>
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-posts.loading%<mk-ellipsis/></p>
<div v-if="!initializing && posts.length > 0">
<virtual each={ posts }>
<mk-user-overview-posts-post-card post={ this }/>
</virtual>
</div>
<p class="empty" if={ !initializing && posts.length == 0 }>%i18n:mobile.tags.mk-user-overview-posts.no-posts%</p>
<p class="empty" v-if="!initializing && posts.length == 0">%i18n:mobile.tags.mk-user-overview-posts.no-posts%</p>
<style lang="stylus" scoped>
:scope
display block
@@ -436,13 +436,13 @@
</mk-user-overview-posts-post-card>
<mk-user-overview-photos>
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-photos.loading%<mk-ellipsis/></p>
<div class="stream" if={ !initializing && images.length > 0 }>
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-photos.loading%<mk-ellipsis/></p>
<div class="stream" v-if="!initializing && images.length > 0">
<virtual each={ image in images }>
<a class="img" style={ 'background-image: url(' + image.media.url + '?thumbnail&size=256)' } href={ '/' + image.post.user.username + '/' + image.post.id }></a>
</virtual>
</div>
<p class="empty" if={ !initializing && images.length == 0 }>%i18n:mobile.tags.mk-user-overview-photos.no-photos%</p>
<p class="empty" v-if="!initializing && images.length == 0">%i18n:mobile.tags.mk-user-overview-photos.no-photos%</p>
<style lang="stylus" scoped>
:scope
display block
@@ -506,7 +506,7 @@
</mk-user-overview-photos>
<mk-user-overview-activity-chart>
<svg if={ data } ref="canvas" viewBox="0 0 30 1" preserveAspectRatio="none">
<svg v-if="data" ref="canvas" viewBox="0 0 30 1" preserveAspectRatio="none">
<g each={ d, i in data.reverse() }>
<rect width="0.8" riot-height={ d.postsH }
riot-x={ i + 0.1 } riot-y={ 1 - d.postsH - d.repliesH - d.repostsH }
@@ -558,12 +558,12 @@
</mk-user-overview-activity-chart>
<mk-user-overview-keywords>
<div if={ user.keywords != null && user.keywords.length > 1 }>
<div v-if="user.keywords != null && user.keywords.length > 1">
<virtual each={ keyword in user.keywords }>
<a>{ keyword }</a>
</virtual>
</div>
<p class="empty" if={ user.keywords == null || user.keywords.length == 0 }>%i18n:mobile.tags.mk-user-overview-keywords.no-keywords%</p>
<p class="empty" v-if="user.keywords == null || user.keywords.length == 0">%i18n:mobile.tags.mk-user-overview-keywords.no-keywords%</p>
<style lang="stylus" scoped>
:scope
display block
@@ -592,12 +592,12 @@
</mk-user-overview-keywords>
<mk-user-overview-domains>
<div if={ user.domains != null && user.domains.length > 1 }>
<div v-if="user.domains != null && user.domains.length > 1">
<virtual each={ domain in user.domains }>
<a style="opacity: { 0.5 + (domain.weight / 2) }">{ domain.domain }</a>
</virtual>
</div>
<p class="empty" if={ user.domains == null || user.domains.length == 0 }>%i18n:mobile.tags.mk-user-overview-domains.no-domains%</p>
<p class="empty" v-if="user.domains == null || user.domains.length == 0">%i18n:mobile.tags.mk-user-overview-domains.no-domains%</p>
<style lang="stylus" scoped>
:scope
display block
@@ -626,13 +626,13 @@
</mk-user-overview-domains>
<mk-user-overview-frequently-replied-users>
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-frequently-replied-users.loading%<mk-ellipsis/></p>
<div if={ !initializing && users.length > 0 }>
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-frequently-replied-users.loading%<mk-ellipsis/></p>
<div v-if="!initializing && users.length > 0">
<virtual each={ users }>
<mk-user-card user={ this.user }/>
</virtual>
</div>
<p class="empty" if={ !initializing && users.length == 0 }>%i18n:mobile.tags.mk-user-overview-frequently-replied-users.no-users%</p>
<p class="empty" v-if="!initializing && users.length == 0">%i18n:mobile.tags.mk-user-overview-frequently-replied-users.no-users%</p>
<style lang="stylus" scoped>
:scope
display block
@@ -678,13 +678,13 @@
</mk-user-overview-frequently-replied-users>
<mk-user-overview-followers-you-know>
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-followers-you-know.loading%<mk-ellipsis/></p>
<div if={ !initializing && users.length > 0 }>
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-followers-you-know.loading%<mk-ellipsis/></p>
<div v-if="!initializing && users.length > 0">
<virtual each={ user in users }>
<a href={ '/' + user.username }><img src={ user.avatar_url + '?thumbnail&size=64' } alt={ user.name }/></a>
</virtual>
</div>
<p class="empty" if={ !initializing && users.length == 0 }>%i18n:mobile.tags.mk-user-overview-followers-you-know.no-users%</p>
<p class="empty" v-if="!initializing && users.length == 0">%i18n:mobile.tags.mk-user-overview-followers-you-know.no-users%</p>
<style lang="stylus" scoped>
:scope
display block

View File

@@ -1,16 +1,16 @@
<mk-users-list>
<nav>
<span data-is-active={ mode == 'all' } @click="setMode.bind(this, 'all')">%i18n:mobile.tags.mk-users-list.all%<span>{ opts.count }</span></span>
<span if={ SIGNIN && opts.youKnowCount } data-is-active={ mode == 'iknow' } @click="setMode.bind(this, 'iknow')">%i18n:mobile.tags.mk-users-list.known%<span>{ opts.youKnowCount }</span></span>
<span v-if="SIGNIN && opts.youKnowCount" data-is-active={ mode == 'iknow' } @click="setMode.bind(this, 'iknow')">%i18n:mobile.tags.mk-users-list.known%<span>{ opts.youKnowCount }</span></span>
</nav>
<div class="users" if={ !fetching && users.length != 0 }>
<div class="users" v-if="!fetching && users.length != 0">
<mk-user-preview each={ users } user={ this }/>
</div>
<button class="more" if={ !fetching && next != null } @click="more" disabled={ moreFetching }>
<span if={ !moreFetching }>%i18n:mobile.tags.mk-users-list.load-more%</span>
<span if={ moreFetching }>%i18n:common.loading%<mk-ellipsis/></span></button>
<p class="no" if={ !fetching && users.length == 0 }>{ opts.noUsers }</p>
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<button class="more" v-if="!fetching && next != null" @click="more" disabled={ moreFetching }>
<span v-if="!moreFetching">%i18n:mobile.tags.mk-users-list.load-more%</span>
<span v-if="moreFetching">%i18n:common.loading%<mk-ellipsis/></span></button>
<p class="no" v-if="!fetching && users.length == 0">{ opts.noUsers }</p>
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped>
:scope
display block