wip
This commit is contained in:
parent
063193f429
commit
fb7e9310bf
|
@ -12,15 +12,15 @@
|
|||
<h2>このアプリは次の権限を要求しています:</h2>
|
||||
<ul>
|
||||
<virtual each={ p in app.permission }>
|
||||
<li if={ p == 'account-read' }>アカウントの情報を見る。</li>
|
||||
<li if={ p == 'account-write' }>アカウントの情報を操作する。</li>
|
||||
<li if={ p == 'post-write' }>投稿する。</li>
|
||||
<li if={ p == 'like-write' }>いいねしたりいいね解除する。</li>
|
||||
<li if={ p == 'following-write' }>フォローしたりフォロー解除する。</li>
|
||||
<li if={ p == 'drive-read' }>ドライブを見る。</li>
|
||||
<li if={ p == 'drive-write' }>ドライブを操作する。</li>
|
||||
<li if={ p == 'notification-read' }>通知を見る。</li>
|
||||
<li if={ p == 'notification-write' }>通知を操作する。</li>
|
||||
<li v-if="p == 'account-read'">アカウントの情報を見る。</li>
|
||||
<li v-if="p == 'account-write'">アカウントの情報を操作する。</li>
|
||||
<li v-if="p == 'post-write'">投稿する。</li>
|
||||
<li v-if="p == 'like-write'">いいねしたりいいね解除する。</li>
|
||||
<li v-if="p == 'following-write'">フォローしたりフォロー解除する。</li>
|
||||
<li v-if="p == 'drive-read'">ドライブを見る。</li>
|
||||
<li v-if="p == 'drive-write'">ドライブを操作する。</li>
|
||||
<li v-if="p == 'notification-read'">通知を見る。</li>
|
||||
<li v-if="p == 'notification-write'">通知を操作する。</li>
|
||||
</virtual>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<mk-index>
|
||||
<main if={ SIGNIN }>
|
||||
<p class="fetching" if={ fetching }>読み込み中<mk-ellipsis/></p>
|
||||
<mk-form ref="form" if={ state == 'waiting' } session={ session }/>
|
||||
<div class="denied" if={ state == 'denied' }>
|
||||
<main v-if="SIGNIN">
|
||||
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
||||
<mk-form ref="form" v-if="state == 'waiting'" session={ session }/>
|
||||
<div class="denied" v-if="state == 'denied'">
|
||||
<h1>アプリケーションの連携をキャンセルしました。</h1>
|
||||
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
||||
</div>
|
||||
<div class="accepted" if={ state == 'accepted' }>
|
||||
<div class="accepted" v-if="state == 'accepted'">
|
||||
<h1>{ session.app.is_authorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました'}</h1>
|
||||
<p if={ session.app.callback_url }>アプリケーションに戻っています<mk-ellipsis/></p>
|
||||
<p if={ !session.app.callback_url }>アプリケーションに戻って、やっていってください。</p>
|
||||
<p v-if="session.app.callback_url">アプリケーションに戻っています<mk-ellipsis/></p>
|
||||
<p v-if="!session.app.callback_url">アプリケーションに戻って、やっていってください。</p>
|
||||
</div>
|
||||
<div class="error" if={ state == 'fetch-session-error' }>
|
||||
<div class="error" v-if="state == 'fetch-session-error'">
|
||||
<p>セッションが存在しません。</p>
|
||||
</div>
|
||||
</main>
|
||||
<main class="signin" if={ !SIGNIN }>
|
||||
<main class="signin" v-if="!SIGNIN">
|
||||
<h1>サインインしてください</h1>
|
||||
<mk-signin/>
|
||||
</main>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-channel>
|
||||
<mk-header/>
|
||||
<hr>
|
||||
<main if={ !fetching }>
|
||||
<main v-if="!fetching">
|
||||
<h1>{ channel.title }</h1>
|
||||
|
||||
<div if={ SIGNIN }>
|
||||
<p if={ channel.is_watching }>このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
|
||||
<p if={ !channel.is_watching }><a @click="watch">このチャンネルをウォッチする</a></p>
|
||||
<div v-if="SIGNIN">
|
||||
<p v-if="channel.is_watching">このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
|
||||
<p v-if="!channel.is_watching"><a @click="watch">このチャンネルをウォッチする</a></p>
|
||||
</div>
|
||||
|
||||
<div class="share">
|
||||
|
@ -15,17 +15,17 @@
|
|||
</div>
|
||||
|
||||
<div class="body">
|
||||
<p if={ postsFetching }>読み込み中<mk-ellipsis/></p>
|
||||
<div if={ !postsFetching }>
|
||||
<p if={ posts == null || posts.length == 0 }>まだ投稿がありません</p>
|
||||
<virtual if={ posts != null }>
|
||||
<p v-if="postsFetching">読み込み中<mk-ellipsis/></p>
|
||||
<div v-if="!postsFetching">
|
||||
<p v-if="posts == null || posts.length == 0">まだ投稿がありません</p>
|
||||
<virtual v-if="posts != null">
|
||||
<mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/>
|
||||
</virtual>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<mk-channel-form if={ SIGNIN } channel={ channel } ref="form"/>
|
||||
<div if={ !SIGNIN }>
|
||||
<mk-channel-form v-if="SIGNIN" channel={ channel } ref="form"/>
|
||||
<div v-if="!SIGNIN">
|
||||
<p>参加するには<a href={ _URL_ }>ログインまたは新規登録</a>してください</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
@ -171,9 +171,9 @@
|
|||
<span>ID:<i>{ post.user.username }</i></span>
|
||||
</header>
|
||||
<div>
|
||||
<a if={ post.reply }>>>{ post.reply.index }</a>
|
||||
<a v-if="post.reply">>>{ post.reply.index }</a>
|
||||
{ post.text }
|
||||
<div class="media" if={ post.media }>
|
||||
<div class="media" v-if="post.media">
|
||||
<virtual each={ file in post.media }>
|
||||
<a href={ file.url } target="_blank">
|
||||
<img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/>
|
||||
|
@ -241,17 +241,17 @@
|
|||
</mk-channel-post>
|
||||
|
||||
<mk-channel-form>
|
||||
<p if={ reply }><b>>>{ reply.index }</b> ({ reply.user.name }): <a @click="clearReply">[x]</a></p>
|
||||
<p v-if="reply"><b>>>{ reply.index }</b> ({ reply.user.name }): <a @click="clearReply">[x]</a></p>
|
||||
<textarea ref="text" disabled={ wait } oninput={ update } onkeydown={ onkeydown } onpaste={ onpaste } placeholder="%i18n:ch.tags.mk-channel-form.textarea%"></textarea>
|
||||
<div class="actions">
|
||||
<button @click="selectFile">%fa:upload%%i18n:ch.tags.mk-channel-form.upload%</button>
|
||||
<button @click="drive">%fa:cloud%%i18n:ch.tags.mk-channel-form.drive%</button>
|
||||
<button class={ wait: wait } ref="submit" disabled={ wait || (refs.text.value.length == 0) } @click="post">
|
||||
<virtual if={ !wait }>%fa:paper-plane%</virtual>{ wait ? '%i18n:ch.tags.mk-channel-form.posting%' : '%i18n:ch.tags.mk-channel-form.post%' }<mk-ellipsis if={ wait }/>
|
||||
<virtual v-if="!wait">%fa:paper-plane%</virtual>{ wait ? '%i18n:ch.tags.mk-channel-form.posting%' : '%i18n:ch.tags.mk-channel-form.post%' }<mk-ellipsis v-if="wait"/>
|
||||
</button>
|
||||
</div>
|
||||
<mk-uploader ref="uploader"/>
|
||||
<ol if={ files }>
|
||||
<ol v-if="files">
|
||||
<li each={ files }>{ name }</li>
|
||||
</ol>
|
||||
<input ref="file" type="file" accept="image/*" multiple="multiple" onchange={ changeFile }/>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<a href={ _CH_URL_ }>Index</a> | <a href={ _URL_ }>Misskey</a>
|
||||
</div>
|
||||
<div>
|
||||
<a if={ !SIGNIN } href={ _URL_ }>ログイン(新規登録)</a>
|
||||
<a if={ SIGNIN } href={ _URL_ + '/' + I.username }>{ I.username }</a>
|
||||
<a v-if="!SIGNIN" href={ _URL_ }>ログイン(新規登録)</a>
|
||||
<a v-if="SIGNIN" href={ _URL_ + '/' + I.username }>{ I.username }</a>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<hr>
|
||||
<button @click="n">%i18n:ch.tags.mk-index.new%</button>
|
||||
<hr>
|
||||
<ul if={ channels }>
|
||||
<ul v-if="channels">
|
||||
<li each={ channels }><a href={ '/' + this.id }>{ this.title }</a></li>
|
||||
</ul>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-activity-table>
|
||||
<svg if={ data } ref="canvas" viewBox="0 0 53 7" preserveAspectRatio="none">
|
||||
<svg v-if="data" ref="canvas" viewBox="0 0 53 7" preserveAspectRatio="none">
|
||||
<rect each={ data } width="1" height="1"
|
||||
riot-x={ x } riot-y={ date.weekday }
|
||||
rx="1" ry="1"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<mk-authorized-apps>
|
||||
<div class="none ui info" if={ !fetching && apps.length == 0 }>
|
||||
<div class="none ui info" v-if="!fetching && apps.length == 0">
|
||||
<p>%fa:info-circle%%i18n:common.tags.mk-authorized-apps.no-apps%</p>
|
||||
</div>
|
||||
<div class="apps" if={ apps.length != 0 }>
|
||||
<div class="apps" v-if="apps.length != 0">
|
||||
<div each={ app in apps }>
|
||||
<p><b>{ app.name }</b></p>
|
||||
<p>{ app.description }</p>
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
}</a>{
|
||||
'%i18n:common.tags.mk-error.description%'.substr('%i18n:common.tags.mk-error.description%'.indexOf('}') + 1)
|
||||
}</p>
|
||||
<button if={ !troubleshooting } @click="troubleshoot">%i18n:common.tags.mk-error.troubleshoot%</button>
|
||||
<mk-troubleshooter if={ troubleshooting }/>
|
||||
<button v-if="!troubleshooting" @click="troubleshoot">%i18n:common.tags.mk-error.troubleshoot%</button>
|
||||
<mk-troubleshooter v-if="troubleshooting"/>
|
||||
<p class="thanks">%i18n:common.tags.mk-error.thanks%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
@ -98,15 +98,15 @@
|
|||
<mk-troubleshooter>
|
||||
<h1>%fa:wrench%%i18n:common.tags.mk-error.troubleshooter.title%</h1>
|
||||
<div>
|
||||
<p data-wip={ network == null }><virtual if={ network != null }><virtual if={ network }>%fa:check%</virtual><virtual if={ !network }>%fa:times%</virtual></virtual>{ network == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-network%' : '%i18n:common.tags.mk-error.troubleshooter.network%' }<mk-ellipsis if={ network == null }/></p>
|
||||
<p if={ network == true } data-wip={ internet == null }><virtual if={ internet != null }><virtual if={ internet }>%fa:check%</virtual><virtual if={ !internet }>%fa:times%</virtual></virtual>{ internet == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-internet%' : '%i18n:common.tags.mk-error.troubleshooter.internet%' }<mk-ellipsis if={ internet == null }/></p>
|
||||
<p if={ internet == true } data-wip={ server == null }><virtual if={ server != null }><virtual if={ server }>%fa:check%</virtual><virtual if={ !server }>%fa:times%</virtual></virtual>{ server == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-server%' : '%i18n:common.tags.mk-error.troubleshooter.server%' }<mk-ellipsis if={ server == null }/></p>
|
||||
<p data-wip={ network == null }><virtual v-if="network != null"><virtual v-if="network">%fa:check%</virtual><virtual v-if="!network">%fa:times%</virtual></virtual>{ network == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-network%' : '%i18n:common.tags.mk-error.troubleshooter.network%' }<mk-ellipsis v-if="network == null"/></p>
|
||||
<p v-if="network == true" data-wip={ internet == null }><virtual v-if="internet != null"><virtual v-if="internet">%fa:check%</virtual><virtual v-if="!internet">%fa:times%</virtual></virtual>{ internet == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-internet%' : '%i18n:common.tags.mk-error.troubleshooter.internet%' }<mk-ellipsis v-if="internet == null"/></p>
|
||||
<p v-if="internet == true" data-wip={ server == null }><virtual v-if="server != null"><virtual v-if="server">%fa:check%</virtual><virtual v-if="!server">%fa:times%</virtual></virtual>{ server == null ? '%i18n:common.tags.mk-error.troubleshooter.checking-server%' : '%i18n:common.tags.mk-error.troubleshooter.server%' }<mk-ellipsis v-if="server == null"/></p>
|
||||
</div>
|
||||
<p if={ !end }>%i18n:common.tags.mk-error.troubleshooter.finding%<mk-ellipsis/></p>
|
||||
<p if={ network === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-network%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-network-desc%</p>
|
||||
<p if={ internet === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-internet%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-internet-desc%</p>
|
||||
<p if={ server === false }><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-server%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-server-desc%</p>
|
||||
<p if={ server === true } class="success"><b>%fa:info-circle%%i18n:common.tags.mk-error.troubleshooter.success%</b><br>%i18n:common.tags.mk-error.troubleshooter.success-desc%</p>
|
||||
<p v-if="!end">%i18n:common.tags.mk-error.troubleshooter.finding%<mk-ellipsis/></p>
|
||||
<p v-if="network === false"><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-network%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-network-desc%</p>
|
||||
<p v-if="internet === false"><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-internet%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-internet-desc%</p>
|
||||
<p v-if="server === false"><b>%fa:exclamation-triangle%%i18n:common.tags.mk-error.troubleshooter.no-server%</b><br>%i18n:common.tags.mk-error.troubleshooter.no-server-desc%</p>
|
||||
<p v-if="server === true" class="success"><b>%fa:info-circle%%i18n:common.tags.mk-error.troubleshooter.success%</b><br>%i18n:common.tags.mk-error.troubleshooter.success-desc%</p>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-file-type-icon>
|
||||
<virtual if={ kind == 'image' }>%fa:file-image%</virtual>
|
||||
<virtual v-if="kind == 'image'">%fa:file-image%</virtual>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display inline
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="files"></div>
|
||||
<mk-uploader ref="uploader"/>
|
||||
<button class="send" @click="send" disabled={ sending } title="%i18n:common.send%">
|
||||
<virtual if={ !sending }>%fa:paper-plane%</virtual><virtual if={ sending }>%fa:spinner .spin%</virtual>
|
||||
<virtual v-if="!sending">%fa:paper-plane%</virtual><virtual v-if="sending">%fa:spinner .spin%</virtual>
|
||||
</button>
|
||||
<button class="attach-from-local" type="button" title="%i18n:common.tags.mk-messaging-form.attach-from-local%">
|
||||
%fa:upload%
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<mk-messaging data-compact={ opts.compact }>
|
||||
<div class="search" if={ !opts.compact }>
|
||||
<div class="search" v-if="!opts.compact">
|
||||
<div class="form">
|
||||
<label for="search-input">%fa:search%</label>
|
||||
<input ref="search" type="search" oninput={ search } onkeydown={ onSearchKeydown } placeholder="%i18n:common.tags.mk-messaging.search-user%"/>
|
||||
</div>
|
||||
<div class="result">
|
||||
<ol class="users" if={ searchResult.length > 0 } ref="searchResult">
|
||||
<ol class="users" v-if="searchResult.length > 0" ref="searchResult">
|
||||
<li each={ user, i in searchResult } onkeydown={ parent.onSearchResultKeydown.bind(null, i) } @click="user._click" tabindex="-1">
|
||||
<img class="avatar" src={ user.avatar_url + '?thumbnail&size=32' } alt=""/>
|
||||
<span class="name">{ user.name }</span>
|
||||
|
@ -14,7 +14,7 @@
|
|||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="history" if={ history.length > 0 }>
|
||||
<div class="history" v-if="history.length > 0">
|
||||
<virtual each={ history }>
|
||||
<a class="user" data-is-me={ is_me } data-is-read={ is_read } @click="_click">
|
||||
<div>
|
||||
|
@ -25,14 +25,14 @@
|
|||
<mk-time time={ created_at }/>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p class="text"><span class="me" if={ is_me }>%i18n:common.tags.mk-messaging.you%:</span>{ text }</p>
|
||||
<p class="text"><span class="me" v-if="is_me">%i18n:common.tags.mk-messaging.you%:</span>{ text }</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</virtual>
|
||||
</div>
|
||||
<p class="no-history" if={ !fetching && history.length == 0 }>%i18n:common.tags.mk-messaging.no-history%</p>
|
||||
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<p class="no-history" v-if="!fetching && history.length == 0">%i18n:common.tags.mk-messaging.no-history%</p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -4,18 +4,18 @@
|
|||
</a>
|
||||
<div class="content-container">
|
||||
<div class="balloon">
|
||||
<p class="read" if={ message.is_me && message.is_read }>%i18n:common.tags.mk-messaging-message.is-read%</p>
|
||||
<button class="delete-button" if={ message.is_me } title="%i18n:common.delete%"><img src="/assets/desktop/messaging/delete.png" alt="Delete"/></button>
|
||||
<div class="content" if={ !message.is_deleted }>
|
||||
<p class="read" v-if="message.is_me && message.is_read">%i18n:common.tags.mk-messaging-message.is-read%</p>
|
||||
<button class="delete-button" v-if="message.is_me" title="%i18n:common.delete%"><img src="/assets/desktop/messaging/delete.png" alt="Delete"/></button>
|
||||
<div class="content" v-if="!message.is_deleted">
|
||||
<div ref="text"></div>
|
||||
<div class="image" if={ message.file }><img src={ message.file.url } alt="image" title={ message.file.name }/></div>
|
||||
<div class="image" v-if="message.file"><img src={ message.file.url } alt="image" title={ message.file.name }/></div>
|
||||
</div>
|
||||
<div class="content" if={ message.is_deleted }>
|
||||
<div class="content" v-if="message.is_deleted">
|
||||
<p class="is-deleted">%i18n:common.tags.mk-messaging-message.deleted%</p>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<mk-time time={ message.created_at }/><virtual if={ message.is_edited }>%fa:pencil-alt%</virtual>
|
||||
<mk-time time={ message.created_at }/><virtual v-if="message.is_edited">%fa:pencil-alt%</virtual>
|
||||
</footer>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<mk-messaging-room>
|
||||
<div class="stream">
|
||||
<p class="init" if={ init }>%fa:spinner .spin%%i18n:common.loading%</p>
|
||||
<p class="empty" if={ !init && messages.length == 0 }>%fa:info-circle%%i18n:common.tags.mk-messaging-room.empty%</p>
|
||||
<p class="no-history" if={ !init && messages.length > 0 && !moreMessagesIsInStock }>%fa:flag%%i18n:common.tags.mk-messaging-room.no-history%</p>
|
||||
<button class="more { fetching: fetchingMoreMessages }" if={ moreMessagesIsInStock } @click="fetchMoreMessages" disabled={ fetchingMoreMessages }>
|
||||
<virtual if={ fetchingMoreMessages }>%fa:spinner .pulse .fw%</virtual>{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:common.tags.mk-messaging-room.more%' }
|
||||
<p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p>
|
||||
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:common.tags.mk-messaging-room.empty%</p>
|
||||
<p class="no-history" v-if="!init && messages.length > 0 && !moreMessagesIsInStock">%fa:flag%%i18n:common.tags.mk-messaging-room.no-history%</p>
|
||||
<button class="more { fetching: fetchingMoreMessages }" v-if="moreMessagesIsInStock" @click="fetchMoreMessages" disabled={ fetchingMoreMessages }>
|
||||
<virtual v-if="fetchingMoreMessages">%fa:spinner .pulse .fw%</virtual>{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:common.tags.mk-messaging-room.more%' }
|
||||
</button>
|
||||
<virtual each={ message, i in messages }>
|
||||
<mk-messaging-message message={ message }/>
|
||||
<p class="date" if={ i != messages.length - 1 && message._date != messages[i + 1]._date }><span>{ messages[i + 1]._datetext }</span></p>
|
||||
<p class="date" v-if="i != messages.length - 1 && message._date != messages[i + 1]._date"><span>{ messages[i + 1]._datetext }</span></p>
|
||||
</virtual>
|
||||
</div>
|
||||
<footer>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-poll-editor>
|
||||
<p class="caution" if={ choices.length < 2 }>
|
||||
<p class="caution" v-if="choices.length < 2">
|
||||
%fa:exclamation-triangle%%i18n:common.tags.mk-poll-editor.no-only-one-choice%
|
||||
</p>
|
||||
<ul ref="choices">
|
||||
|
@ -10,7 +10,7 @@
|
|||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<button class="add" if={ choices.length < 10 } @click="add">%i18n:common.tags.mk-poll-editor.add%</button>
|
||||
<button class="add" v-if="choices.length < 10" @click="add">%i18n:common.tags.mk-poll-editor.add%</button>
|
||||
<button class="destroy" @click="destroy" title="%i18n:common.tags.mk-poll-editor.destroy%">
|
||||
%fa:times%
|
||||
</button>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
<li each={ poll.choices } @click="vote.bind(null, id)" class={ voted: voted } title={ !parent.isVoted ? '%i18n:common.tags.mk-poll.vote-to%'.replace('{}', text) : '' }>
|
||||
<div class="backdrop" style={ 'width:' + (parent.result ? (votes / parent.total * 100) : 0) + '%' }></div>
|
||||
<span>
|
||||
<virtual if={ is_voted }>%fa:check%</virtual>
|
||||
<virtual v-if="is_voted">%fa:check%</virtual>
|
||||
{ text }
|
||||
<span class="votes" if={ parent.result }>({ '%i18n:common.tags.mk-poll.vote-count%'.replace('{}', votes) })</span>
|
||||
<span class="votes" v-if="parent.result">({ '%i18n:common.tags.mk-poll.vote-count%'.replace('{}', votes) })</span>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<p if={ total > 0 }>
|
||||
<p v-if="total > 0">
|
||||
<span>{ '%i18n:common.tags.mk-poll.total-users%'.replace('{}', total) }</span>
|
||||
・
|
||||
<a if={ !isVoted } @click="toggleResult">{ result ? '%i18n:common.tags.mk-poll.vote%' : '%i18n:common.tags.mk-poll.show-result%' }</a>
|
||||
<span if={ isVoted }>%i18n:common.tags.mk-poll.voted%</span>
|
||||
<a v-if="!isVoted" @click="toggleResult">{ result ? '%i18n:common.tags.mk-poll.vote%' : '%i18n:common.tags.mk-poll.show-result%' }</a>
|
||||
<span v-if="isVoted">%i18n:common.tags.mk-poll.voted%</span>
|
||||
</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<mk-post-menu>
|
||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||
<div class="popover { compact: opts.compact }" ref="popover">
|
||||
<button if={ post.user_id === I.id } @click="pin">%i18n:common.tags.mk-post-menu.pin%</button>
|
||||
<div if={ I.is_pro && !post.is_category_verified }>
|
||||
<button v-if="post.user_id === I.id" @click="pin">%i18n:common.tags.mk-post-menu.pin%</button>
|
||||
<div v-if="I.is_pro && !post.is_category_verified">
|
||||
<select ref="categorySelect">
|
||||
<option value="">%i18n:common.tags.mk-post-menu.select%</option>
|
||||
<option value="music">%i18n:common.post_categories.music%</option>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<mk-reaction-icon>
|
||||
<virtual if={ opts.reaction == 'like' }><img src="/assets/reactions/like.png" alt="%i18n:common.reactions.like%"></virtual>
|
||||
<virtual if={ opts.reaction == 'love' }><img src="/assets/reactions/love.png" alt="%i18n:common.reactions.love%"></virtual>
|
||||
<virtual if={ opts.reaction == 'laugh' }><img src="/assets/reactions/laugh.png" alt="%i18n:common.reactions.laugh%"></virtual>
|
||||
<virtual if={ opts.reaction == 'hmm' }><img src="/assets/reactions/hmm.png" alt="%i18n:common.reactions.hmm%"></virtual>
|
||||
<virtual if={ opts.reaction == 'surprise' }><img src="/assets/reactions/surprise.png" alt="%i18n:common.reactions.surprise%"></virtual>
|
||||
<virtual if={ opts.reaction == 'congrats' }><img src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%"></virtual>
|
||||
<virtual if={ opts.reaction == 'angry' }><img src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%"></virtual>
|
||||
<virtual if={ opts.reaction == 'confused' }><img src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%"></virtual>
|
||||
<virtual if={ opts.reaction == 'pudding' }><img src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'like'"><img src="/assets/reactions/like.png" alt="%i18n:common.reactions.like%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'love'"><img src="/assets/reactions/love.png" alt="%i18n:common.reactions.love%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'laugh'"><img src="/assets/reactions/laugh.png" alt="%i18n:common.reactions.laugh%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'hmm'"><img src="/assets/reactions/hmm.png" alt="%i18n:common.reactions.hmm%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'surprise'"><img src="/assets/reactions/surprise.png" alt="%i18n:common.reactions.surprise%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'congrats'"><img src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'angry'"><img src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'confused'"><img src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%"></virtual>
|
||||
<virtual v-if="opts.reaction == 'pudding'"><img src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%"></virtual>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -1,14 +1,23 @@
|
|||
<template>
|
||||
<div>
|
||||
<template v-if="reactions">
|
||||
<span v-if="reactions.like"><mk-reaction-icon reaction='like'/><span>{ reactions.like }</span></span>
|
||||
<span v-if="reactions.love"><mk-reaction-icon reaction='love'/><span>{ reactions.love }</span></span>
|
||||
<span v-if="reactions.laugh"><mk-reaction-icon reaction='laugh'/><span>{ reactions.laugh }</span></span>
|
||||
<span v-if="reactions.hmm"><mk-reaction-icon reaction='hmm'/><span>{ reactions.hmm }</span></span>
|
||||
<span v-if="reactions.surprise"><mk-reaction-icon reaction='surprise'/><span>{ reactions.surprise }</span></span>
|
||||
<span v-if="reactions.congrats"><mk-reaction-icon reaction='congrats'/><span>{ reactions.congrats }</span></span>
|
||||
<span v-if="reactions.angry"><mk-reaction-icon reaction='angry'/><span>{ reactions.angry }</span></span>
|
||||
<span v-if="reactions.confused"><mk-reaction-icon reaction='confused'/><span>{ reactions.confused }</span></span>
|
||||
<span v-if="reactions.pudding"><mk-reaction-icon reaction='pudding'/><span>{ reactions.pudding }</span></span>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<mk-reactions-viewer>
|
||||
<virtual if={ reactions }>
|
||||
<span if={ reactions.like }><mk-reaction-icon reaction='like'/><span>{ reactions.like }</span></span>
|
||||
<span if={ reactions.love }><mk-reaction-icon reaction='love'/><span>{ reactions.love }</span></span>
|
||||
<span if={ reactions.laugh }><mk-reaction-icon reaction='laugh'/><span>{ reactions.laugh }</span></span>
|
||||
<span if={ reactions.hmm }><mk-reaction-icon reaction='hmm'/><span>{ reactions.hmm }</span></span>
|
||||
<span if={ reactions.surprise }><mk-reaction-icon reaction='surprise'/><span>{ reactions.surprise }</span></span>
|
||||
<span if={ reactions.congrats }><mk-reaction-icon reaction='congrats'/><span>{ reactions.congrats }</span></span>
|
||||
<span if={ reactions.angry }><mk-reaction-icon reaction='angry'/><span>{ reactions.angry }</span></span>
|
||||
<span if={ reactions.confused }><mk-reaction-icon reaction='confused'/><span>{ reactions.confused }</span></span>
|
||||
<span if={ reactions.pudding }><mk-reaction-icon reaction='pudding'/><span>{ reactions.pudding }</span></span>
|
||||
<virtual v-if="reactions">
|
||||
|
||||
</virtual>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
|
@ -1,5 +1,5 @@
|
|||
<mk-signin-history>
|
||||
<div class="records" if={ history.length != 0 }>
|
||||
<div class="records" v-if="history.length != 0">
|
||||
<mk-signin-record each={ rec in history } rec={ rec }/>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
|
@ -43,8 +43,8 @@
|
|||
|
||||
<mk-signin-record>
|
||||
<header @click="toggle">
|
||||
<virtual if={ rec.success }>%fa:check%</virtual>
|
||||
<virtual if={ !rec.success }>%fa:times%</virtual>
|
||||
<virtual v-if="rec.success">%fa:check%</virtual>
|
||||
<virtual v-if="!rec.success">%fa:times%</virtual>
|
||||
<span class="ip">{ rec.ip }</span>
|
||||
<mk-time time={ rec.created_at }/>
|
||||
</header>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<label class="password">
|
||||
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required="required"/>%fa:lock%
|
||||
</label>
|
||||
<label class="token" if={ user && user.two_factor_enabled }>
|
||||
<label class="token" v-if="user && user.two_factor_enabled">
|
||||
<input ref="token" type="number" placeholder="%i18n:common.tags.mk-signin.token%" required="required"/>%fa:lock%
|
||||
</label>
|
||||
<button type="submit" disabled={ signing }>{ signing ? '%i18n:common.tags.mk-signin.signing-in%' : '%i18n:common.tags.mk-signin.signin%' }</button>
|
||||
|
|
|
@ -3,34 +3,34 @@
|
|||
<label class="username">
|
||||
<p class="caption">%fa:at%%i18n:common.tags.mk-signup.username%</p>
|
||||
<input ref="username" type="text" pattern="^[a-zA-Z0-9-]{3,20}$" placeholder="a~z、A~Z、0~9、-" autocomplete="off" required="required" onkeyup={ onChangeUsername }/>
|
||||
<p class="profile-page-url-preview" if={ refs.username.value != '' && username-state != 'invalidFormat' && username-state != 'minRange' && username-state != 'maxRange' }>{ _URL_ + '/' + refs.username.value }</p>
|
||||
<p class="info" if={ usernameState == 'wait' } style="color:#999">%fa:spinner .pulse .fw%%i18n:common.tags.mk-signup.checking%</p>
|
||||
<p class="info" if={ usernameState == 'ok' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.available%</p>
|
||||
<p class="info" if={ usernameState == 'unavailable' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.unavailable%</p>
|
||||
<p class="info" if={ usernameState == 'error' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.error%</p>
|
||||
<p class="info" if={ usernameState == 'invalid-format' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.invalid-format%</p>
|
||||
<p class="info" if={ usernameState == 'min-range' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-short%</p>
|
||||
<p class="info" if={ usernameState == 'max-range' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-long%</p>
|
||||
<p class="profile-page-url-preview" v-if="refs.username.value != '' && username-state != 'invalidFormat' && username-state != 'minRange' && username-state != 'maxRange'">{ _URL_ + '/' + refs.username.value }</p>
|
||||
<p class="info" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw%%i18n:common.tags.mk-signup.checking%</p>
|
||||
<p class="info" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.available%</p>
|
||||
<p class="info" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.unavailable%</p>
|
||||
<p class="info" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.error%</p>
|
||||
<p class="info" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.invalid-format%</p>
|
||||
<p class="info" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-short%</p>
|
||||
<p class="info" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-long%</p>
|
||||
</label>
|
||||
<label class="password">
|
||||
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%</p>
|
||||
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signup.password-placeholder%" autocomplete="off" required="required" onkeyup={ onChangePassword }/>
|
||||
<div class="meter" if={ passwordStrength != '' } data-strength={ passwordStrength }>
|
||||
<div class="meter" v-if="passwordStrength != ''" data-strength={ passwordStrength }>
|
||||
<div class="value" ref="passwordMetar"></div>
|
||||
</div>
|
||||
<p class="info" if={ passwordStrength == 'low' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.weak-password%</p>
|
||||
<p class="info" if={ passwordStrength == 'medium' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.normal-password%</p>
|
||||
<p class="info" if={ passwordStrength == 'high' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.strong-password%</p>
|
||||
<p class="info" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.weak-password%</p>
|
||||
<p class="info" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.normal-password%</p>
|
||||
<p class="info" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.strong-password%</p>
|
||||
</label>
|
||||
<label class="retype-password">
|
||||
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%(%i18n:common.tags.mk-signup.retype%)</p>
|
||||
<input ref="passwordRetype" type="password" placeholder="%i18n:common.tags.mk-signup.retype-placeholder%" autocomplete="off" required="required" onkeyup={ onChangePasswordRetype }/>
|
||||
<p class="info" if={ passwordRetypeState == 'match' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.password-matched%</p>
|
||||
<p class="info" if={ passwordRetypeState == 'not-match' } style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.password-not-matched%</p>
|
||||
<p class="info" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.password-matched%</p>
|
||||
<p class="info" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.password-not-matched%</p>
|
||||
</label>
|
||||
<label class="recaptcha">
|
||||
<p class="caption"><virtual if={ recaptchaed }>%fa:toggle-on%</virtual><virtual if={ !recaptchaed }>%fa:toggle-off%</virtual>%i18n:common.tags.mk-signup.recaptcha%</p>
|
||||
<div if={ recaptcha } class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" data-sitekey={ recaptcha.site_key }></div>
|
||||
<p class="caption"><virtual v-if="recaptchaed">%fa:toggle-on%</virtual><virtual v-if="!recaptchaed">%fa:toggle-off%</virtual>%i18n:common.tags.mk-signup.recaptcha%</p>
|
||||
<div v-if="recaptcha" class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" data-sitekey={ recaptcha.site_key }></div>
|
||||
</label>
|
||||
<label class="agree-tou">
|
||||
<input name="agree-tou" type="checkbox" autocomplete="off" required="required"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<mk-special-message>
|
||||
<p if={ m == 1 && d == 1 }>%i18n:common.tags.mk-special-message.new-year%</p>
|
||||
<p if={ m == 12 && d == 25 }>%i18n:common.tags.mk-special-message.christmas%</p>
|
||||
<p v-if="m == 1 && d == 1">%i18n:common.tags.mk-special-message.new-year%</p>
|
||||
<p v-if="m == 12 && d == 25">%i18n:common.tags.mk-special-message.christmas%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-twitter-setting>
|
||||
<p>%i18n:common.tags.mk-twitter-setting.description%<a href={ _DOCS_URL_ + '/link-to-twitter' } target="_blank">%i18n:common.tags.mk-twitter-setting.detail%</a></p>
|
||||
<p class="account" if={ I.twitter } title={ 'Twitter ID: ' + I.twitter.user_id }>%i18n:common.tags.mk-twitter-setting.connected-to%: <a href={ 'https://twitter.com/' + I.twitter.screen_name } target="_blank">@{ I.twitter.screen_name }</a></p>
|
||||
<p class="account" v-if="I.twitter" title={ 'Twitter ID: ' + I.twitter.user_id }>%i18n:common.tags.mk-twitter-setting.connected-to%: <a href={ 'https://twitter.com/' + I.twitter.screen_name } target="_blank">@{ I.twitter.screen_name }</a></p>
|
||||
<p>
|
||||
<a href={ _API_URL_ + '/connect/twitter' } target="_blank" @click="connect">{ I.twitter ? '%i18n:common.tags.mk-twitter-setting.reconnect%' : '%i18n:common.tags.mk-twitter-setting.connect%' }</a>
|
||||
<span if={ I.twitter }> or </span>
|
||||
<a href={ _API_URL_ + '/disconnect/twitter' } target="_blank" if={ I.twitter } @click="disconnect">%i18n:common.tags.mk-twitter-setting.disconnect%</a>
|
||||
<span v-if="I.twitter"> or </span>
|
||||
<a href={ _API_URL_ + '/disconnect/twitter' } target="_blank" v-if="I.twitter" @click="disconnect">%i18n:common.tags.mk-twitter-setting.disconnect%</a>
|
||||
</p>
|
||||
<p class="id" if={ I.twitter }>Twitter ID: { I.twitter.user_id }</p>
|
||||
<p class="id" v-if="I.twitter">Twitter ID: { I.twitter.user_id }</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-uploader>
|
||||
<ol if={ uploads.length > 0 }>
|
||||
<ol v-if="uploads.length > 0">
|
||||
<li each={ uploads }>
|
||||
<div class="img" style="background-image: url({ img })"></div>
|
||||
<p class="name">%fa:spinner .pulse%{ name }</p>
|
||||
<p class="status"><span class="initing" if={ progress == undefined }>%i18n:common.tags.mk-uploader.waiting%<mk-ellipsis/></span><span class="kb" if={ progress != undefined }>{ String(Math.floor(progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i> / { String(Math.floor(progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i></span><span class="percentage" if={ progress != undefined }>{ Math.floor((progress.value / progress.max) * 100) }</span></p>
|
||||
<progress if={ progress != undefined && progress.value != progress.max } value={ progress.value } max={ progress.max }></progress>
|
||||
<div class="progress initing" if={ progress == undefined }></div>
|
||||
<div class="progress waiting" if={ progress != undefined && progress.value == progress.max }></div>
|
||||
<p class="status"><span class="initing" v-if="progress == undefined">%i18n:common.tags.mk-uploader.waiting%<mk-ellipsis/></span><span class="kb" v-if="progress != undefined">{ String(Math.floor(progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i> / { String(Math.floor(progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }<i>KB</i></span><span class="percentage" v-if="progress != undefined">{ Math.floor((progress.value / progress.max) * 100) }</span></p>
|
||||
<progress v-if="progress != undefined && progress.value != progress.max" value={ progress.value } max={ progress.max }></progress>
|
||||
<div class="progress initing" v-if="progress == undefined"></div>
|
||||
<div class="progress waiting" v-if="progress != undefined && progress.value == progress.max"></div>
|
||||
</li>
|
||||
</ol>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-autocomplete-suggestion>
|
||||
<ol class="users" ref="users" if={ users.length > 0 }>
|
||||
<ol class="users" ref="users" v-if="users.length > 0">
|
||||
<li each={ users } @click="parent.onClick" onkeydown={ parent.onKeydown } tabindex="-1">
|
||||
<img class="avatar" src={ avatar_url + '?thumbnail&size=32' } alt=""/>
|
||||
<span class="name">{ name }</span>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<mk-big-follow-button>
|
||||
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } @click="onclick" disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
|
||||
<span if={ !wait && user.is_following }>%fa:minus%フォロー解除</span>
|
||||
<span if={ !wait && !user.is_following }>%fa:plus%フォロー</span>
|
||||
<virtual if={ wait }>%fa:spinner .pulse .fw%</virtual>
|
||||
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
|
||||
<span v-if="!wait && user.is_following">%fa:minus%フォロー解除</span>
|
||||
<span v-if="!wait && !user.is_following">%fa:plus%フォロー</span>
|
||||
<virtual v-if="wait">%fa:spinner .pulse .fw%</virtual>
|
||||
</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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<mk-detailed-post-window>
|
||||
<div class="bg" ref="bg" @click="bgClick"></div>
|
||||
<div class="main" ref="main" if={ !fetching }>
|
||||
<div class="main" ref="main" v-if="!fetching">
|
||||
<mk-post-detail ref="detail" post={ post }/>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<mk-drive-browser-window>
|
||||
<mk-window ref="window" is-modal={ false } width={ '800px' } height={ '500px' } popout={ popout }>
|
||||
<yield to="header">
|
||||
<p class="info" if={ parent.usage }><b>{ parent.usage.toFixed(1) }%</b> %i18n:desktop.tags.mk-drive-browser-window.used%</p>
|
||||
<p class="info" v-if="parent.usage"><b>{ parent.usage.toFixed(1) }%</b> %i18n:desktop.tags.mk-drive-browser-window.used%</p>
|
||||
%fa:cloud%%i18n:desktop.tags.mk-drive-browser-window.drive%
|
||||
</yield>
|
||||
<yield to="content">
|
||||
|
|
|
@ -6,44 +6,44 @@
|
|||
<span class="separator">%fa:angle-right%</span>
|
||||
<mk-drive-browser-nav-folder folder={ folder }/>
|
||||
</virtual>
|
||||
<span class="separator" if={ folder != null }>%fa:angle-right%</span>
|
||||
<span class="folder current" if={ folder != null }>{ folder.name }</span>
|
||||
<span class="separator" v-if="folder != null">%fa:angle-right%</span>
|
||||
<span class="folder current" v-if="folder != null">{ folder.name }</span>
|
||||
</div>
|
||||
<input class="search" type="search" placeholder=" %i18n:desktop.tags.mk-drive-browser.search%"/>
|
||||
</nav>
|
||||
<div class="main { uploading: uploads.length > 0, fetching: fetching }" ref="main" onmousedown={ onmousedown } ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop } oncontextmenu={ oncontextmenu }>
|
||||
<div class="selection" ref="selection"></div>
|
||||
<div class="contents" ref="contents">
|
||||
<div class="folders" ref="foldersContainer" if={ folders.length > 0 }>
|
||||
<div class="folders" ref="foldersContainer" v-if="folders.length > 0">
|
||||
<virtual each={ folder in folders }>
|
||||
<mk-drive-browser-folder class="folder" folder={ folder }/>
|
||||
</virtual>
|
||||
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
|
||||
<div class="padding" each={ Array(10).fill(16) }></div>
|
||||
<button if={ moreFolders }>%i18n:desktop.tags.mk-drive-browser.load-more%</button>
|
||||
<button v-if="moreFolders">%i18n:desktop.tags.mk-drive-browser.load-more%</button>
|
||||
</div>
|
||||
<div class="files" ref="filesContainer" if={ files.length > 0 }>
|
||||
<div class="files" ref="filesContainer" v-if="files.length > 0">
|
||||
<virtual each={ file in files }>
|
||||
<mk-drive-browser-file class="file" file={ file }/>
|
||||
</virtual>
|
||||
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
|
||||
<div class="padding" each={ Array(10).fill(16) }></div>
|
||||
<button if={ moreFiles } @click="fetchMoreFiles">%i18n:desktop.tags.mk-drive-browser.load-more%</button>
|
||||
<button v-if="moreFiles" @click="fetchMoreFiles">%i18n:desktop.tags.mk-drive-browser.load-more%</button>
|
||||
</div>
|
||||
<div class="empty" if={ files.length == 0 && folders.length == 0 && !fetching }>
|
||||
<p if={ draghover }>%i18n:desktop.tags.mk-drive-browser.empty-draghover%</p>
|
||||
<p if={ !draghover && folder == null }><strong>%i18n:desktop.tags.mk-drive-browser.empty-drive%</strong><br/>%i18n:desktop.tags.mk-drive-browser.empty-drive-description%</p>
|
||||
<p if={ !draghover && folder != null }>%i18n:desktop.tags.mk-drive-browser.empty-folder%</p>
|
||||
<div class="empty" v-if="files.length == 0 && folders.length == 0 && !fetching">
|
||||
<p v-if="draghover">%i18n:desktop.tags.mk-drive-browser.empty-draghover%</p>
|
||||
<p v-if="!draghover && folder == null"><strong>%i18n:desktop.tags.mk-drive-browser.empty-drive%</strong><br/>%i18n:desktop.tags.mk-drive-browser.empty-drive-description%</p>
|
||||
<p v-if="!draghover && folder != null">%i18n:desktop.tags.mk-drive-browser.empty-folder%</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fetching" if={ fetching }>
|
||||
<div class="fetching" v-if="fetching">
|
||||
<div class="spinner">
|
||||
<div class="dot1"></div>
|
||||
<div class="dot2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropzone" if={ draghover }></div>
|
||||
<div class="dropzone" v-if="draghover"></div>
|
||||
<mk-uploader ref="uploader"/>
|
||||
<input ref="fileInput" type="file" accept="*/*" multiple="multiple" tabindex="-1" onchange={ changeFileInput }/>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<mk-drive-browser-file data-is-selected={ isSelected } data-is-contextmenu-showing={ isContextmenuShowing.toString() } @click="onclick" oncontextmenu={ oncontextmenu } draggable="true" ondragstart={ ondragstart } ondragend={ ondragend } title={ title }>
|
||||
<div class="label" if={ I.avatar_id == file.id }><img src="/assets/label.svg"/>
|
||||
<div class="label" v-if="I.avatar_id == file.id"><img src="/assets/label.svg"/>
|
||||
<p>%i18n:desktop.tags.mk-drive-browser-file.avatar%</p>
|
||||
</div>
|
||||
<div class="label" if={ I.banner_id == file.id }><img src="/assets/label.svg"/>
|
||||
<div class="label" v-if="I.banner_id == file.id"><img src="/assets/label.svg"/>
|
||||
<p>%i18n:desktop.tags.mk-drive-browser-file.banner%</p>
|
||||
</div>
|
||||
<div class="thumbnail" ref="thumbnail" style="background-color:{ file.properties.average_color ? 'rgb(' + file.properties.average_color.join(',') + ')' : 'transparent' }">
|
||||
<img src={ file.url + '?thumbnail&size=128' } alt="" onload={ onload }/>
|
||||
</div>
|
||||
<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>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-drive-browser-folder data-is-contextmenu-showing={ isContextmenuShowing.toString() } data-draghover={ draghover.toString() } @click="onclick" onmouseover={ onmouseover } onmouseout={ onmouseout } ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop } oncontextmenu={ oncontextmenu } draggable="true" ondragstart={ ondragstart } ondragend={ ondragend } title={ title }>
|
||||
<p class="name"><virtual if={ hover }>%fa:R folder-open .fw%</virtual><virtual if={ !hover }>%fa:R folder .fw%</virtual>{ folder.name }</p>
|
||||
<p class="name"><virtual v-if="hover">%fa:R folder-open .fw%</virtual><virtual v-if="!hover">%fa:R folder .fw%</virtual>{ folder.name }</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-drive-browser-nav-folder data-draghover={ draghover } @click="onclick" ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop }>
|
||||
<virtual if={ folder == null }>%fa:cloud%</virtual><span>{ folder == null ? '%i18n:desktop.tags.mk-drive-browser-nav-folder.drive%' : folder.name }</span>
|
||||
<virtual v-if="folder == null">%fa:cloud%</virtual><span>{ folder == null ? '%i18n:desktop.tags.mk-drive-browser-nav-folder.drive%' : folder.name }</span>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
&[data-draghover]
|
||||
|
|
|
@ -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 } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
|
||||
<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>
|
||||
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
|
||||
<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>
|
||||
</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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<mk-following-setuper>
|
||||
<p class="title">気になるユーザーをフォロー:</p>
|
||||
<div class="users" if={ !fetching && users.length > 0 }>
|
||||
<div class="users" v-if="!fetching && users.length > 0">
|
||||
<div class="user" each={ users }><a class="avatar-anchor" href={ '/' + username }><img class="avatar" src={ avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ id }/></a>
|
||||
<div class="body"><a class="name" href={ '/' + username } target="_blank" data-user-preview={ id }>{ name }</a>
|
||||
<p class="username">@{ username }</p>
|
||||
|
@ -8,8 +8,8 @@
|
|||
<mk-follow-button user={ this }/>
|
||||
</div>
|
||||
</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>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-access-log-home-widget>
|
||||
<virtual if={ data.design == 0 }>
|
||||
<virtual v-if="data.design == 0">
|
||||
<p class="title">%fa:server%%i18n:desktop.tags.mk-access-log-home-widget.title%</p>
|
||||
</virtual>
|
||||
<div ref="log">
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
<path class="wave d" d="M29.18,1.06c-0.479-0.502-1.273-0.522-1.775-0.044c-0.016,0.015-0.029,0.029-0.045,0.044c-0.5,0.52-0.5,1.36,0,1.88 c1.361,1.4,2.041,3.24,2.041,5.08s-0.68,3.66-2.041,5.08c-0.5,0.52-0.5,1.36,0,1.88c0.509,0.508,1.332,0.508,1.841,0 c1.86-1.92,2.8-4.44,2.8-6.96C31.99,5.424,30.98,2.931,29.18,1.06z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<p class="fetching" if={ fetching }>%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p>
|
||||
<h1 if={ !fetching }>{
|
||||
<p class="fetching" v-if="fetching">%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p>
|
||||
<h1 v-if="!fetching">{
|
||||
broadcasts.length == 0 ? '%i18n:desktop.tags.mk-broadcast-home-widget.no-broadcasts%' : broadcasts[i].title
|
||||
}</h1>
|
||||
<p if={ !fetching }><mk-raw if={ broadcasts.length != 0 } content={ broadcasts[i].text }/><virtual if={ broadcasts.length == 0 }>%i18n:desktop.tags.mk-broadcast-home-widget.have-a-nice-day%</virtual></p>
|
||||
<a if={ broadcasts.length > 1 } @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% >></a>
|
||||
<p v-if="!fetching"><mk-raw v-if="broadcasts.length != 0" content={ broadcasts[i].text }/><virtual v-if="broadcasts.length == 0">%i18n:desktop.tags.mk-broadcast-home-widget.have-a-nice-day%</virtual></p>
|
||||
<a v-if="broadcasts.length > 1" @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% >></a>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<mk-channel-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:tv%{
|
||||
channel ? channel.title : '%i18n:desktop.tags.mk-channel-home-widget.title%'
|
||||
}</p>
|
||||
<button @click="settings" title="%i18n:desktop.tags.mk-channel-home-widget.settings%">%fa:cog%</button>
|
||||
</virtual>
|
||||
<p class="get-started" if={ this.data.channel == null }>%i18n:desktop.tags.mk-channel-home-widget.get-started%</p>
|
||||
<p class="get-started" v-if="this.data.channel == null">%i18n:desktop.tags.mk-channel-home-widget.get-started%</p>
|
||||
<mk-channel ref="channel" show={ this.data.channel }/>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
@ -104,9 +104,9 @@
|
|||
</mk-channel-home-widget>
|
||||
|
||||
<mk-channel>
|
||||
<p if={ fetching }>読み込み中<mk-ellipsis/></p>
|
||||
<div if={ !fetching } ref="posts">
|
||||
<p if={ posts.length == 0 }>まだ投稿がありません</p>
|
||||
<p v-if="fetching">読み込み中<mk-ellipsis/></p>
|
||||
<div v-if="!fetching" ref="posts">
|
||||
<p v-if="posts.length == 0">まだ投稿がありません</p>
|
||||
<mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/>
|
||||
</div>
|
||||
<mk-channel-form ref="form"/>
|
||||
|
@ -197,9 +197,9 @@
|
|||
<span>ID:<i>{ post.user.username }</i></span>
|
||||
</header>
|
||||
<div>
|
||||
<a if={ post.reply }>>>{ post.reply.index }</a>
|
||||
<a v-if="post.reply">>>{ post.reply.index }</a>
|
||||
{ post.text }
|
||||
<div class="media" if={ post.media }>
|
||||
<div class="media" v-if="post.media">
|
||||
<virtual each={ file in post.media }>
|
||||
<a href={ file.url } target="_blank">
|
||||
<img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<mk-mentions-home-widget>
|
||||
<header><span data-is-active={ mode == 'all' } @click="setMode.bind(this, 'all')">すべて</span><span data-is-active={ mode == 'following' } @click="setMode.bind(this, 'following')">フォロー中</span></header>
|
||||
<div class="loading" if={ isLoading }>
|
||||
<div class="loading" v-if="isLoading">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p class="empty" if={ isEmpty }>%fa:R comments%<span if={ mode == 'all' }>あなた宛ての投稿はありません。</span><span if={ mode == 'following' }>あなたがフォローしているユーザーからの言及はありません。</span></p>
|
||||
<p class="empty" v-if="isEmpty">%fa:R comments%<span v-if="mode == 'all'">あなた宛ての投稿はありません。</span><span v-if="mode == 'following'">あなたがフォローしているユーザーからの言及はありません。</span></p>
|
||||
<mk-timeline ref="timeline">
|
||||
<yield to="footer">
|
||||
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
|
||||
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual>
|
||||
<virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
|
||||
<virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
|
||||
</yield/>
|
||||
</mk-timeline>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-messaging-home-widget>
|
||||
<virtual if={ data.design == 0 }>
|
||||
<virtual v-if="data.design == 0">
|
||||
<p class="title">%fa:comments%%i18n:desktop.tags.mk-messaging-home-widget.title%</p>
|
||||
</virtual>
|
||||
<mk-messaging ref="index" compact={ true }/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-notifications-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:R bell%%i18n:desktop.tags.mk-notifications-home-widget.title%</p>
|
||||
<button @click="settings" title="%i18n:desktop.tags.mk-notifications-home-widget.settings%">%fa:cog%</button>
|
||||
</virtual>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<mk-photo-stream-home-widget data-melt={ data.design == 2 }>
|
||||
<virtual if={ data.design == 0 }>
|
||||
<virtual v-if="data.design == 0">
|
||||
<p class="title">%fa:camera%%i18n:desktop.tags.mk-photo-stream-home-widget.title%</p>
|
||||
</virtual>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<div class="stream" if={ !initializing && images.length > 0 }>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<div class="stream" v-if="!initializing && images.length > 0">
|
||||
<virtual each={ image in images }>
|
||||
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
|
||||
</virtual>
|
||||
</div>
|
||||
<p class="empty" if={ !initializing && images.length == 0 }>%i18n:desktop.tags.mk-photo-stream-home-widget.no-photos%</p>
|
||||
<p class="empty" v-if="!initializing && images.length == 0">%i18n:desktop.tags.mk-photo-stream-home-widget.no-photos%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<mk-post-form-home-widget>
|
||||
<mk-post-form if={ place == 'main' }/>
|
||||
<virtual if={ place != 'main' }>
|
||||
<virtual if={ data.design == 0 }>
|
||||
<mk-post-form v-if="place == 'main'"/>
|
||||
<virtual v-if="place != 'main'">
|
||||
<virtual v-if="data.design == 0">
|
||||
<p class="title">%fa:pencil-alt%%i18n:desktop.tags.mk-post-form-home-widget.title%</p>
|
||||
</virtual>
|
||||
<textarea disabled={ posting } ref="text" onkeydown={ onkeydown } placeholder="%i18n:desktop.tags.mk-post-form-home-widget.placeholder%"></textarea>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<mk-recommended-polls-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:chart-pie%%i18n:desktop.tags.mk-recommended-polls-home-widget.title%</p>
|
||||
<button @click="fetch" title="%i18n:desktop.tags.mk-recommended-polls-home-widget.refresh%">%fa:sync%</button>
|
||||
</virtual>
|
||||
<div class="poll" if={ !loading && poll != null }>
|
||||
<p if={ poll.text }><a href="/{ poll.user.username }/{ poll.id }">{ poll.text }</a></p>
|
||||
<p if={ !poll.text }><a href="/{ poll.user.username }/{ poll.id }">%fa:link%</a></p>
|
||||
<div class="poll" v-if="!loading && poll != null">
|
||||
<p v-if="poll.text"><a href="/{ poll.user.username }/{ poll.id }">{ poll.text }</a></p>
|
||||
<p v-if="!poll.text"><a href="/{ poll.user.username }/{ poll.id }">%fa:link%</a></p>
|
||||
<mk-poll post={ poll }/>
|
||||
</div>
|
||||
<p class="empty" if={ !loading && poll == null }>%i18n:desktop.tags.mk-recommended-polls-home-widget.nothing%</p>
|
||||
<p class="loading" if={ loading }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<p class="empty" v-if="!loading && poll == null">%i18n:desktop.tags.mk-recommended-polls-home-widget.nothing%</p>
|
||||
<p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-rss-reader-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:rss-square%RSS</p>
|
||||
<button @click="settings" title="設定">%fa:cog%</button>
|
||||
</virtual>
|
||||
<div class="feed" if={ !initializing }>
|
||||
<div class="feed" v-if="!initializing">
|
||||
<virtual each={ item in items }><a href={ item.link } target="_blank">{ item.title }</a></virtual>
|
||||
</div>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<mk-server-home-widget data-melt={ data.design == 2 }>
|
||||
<virtual if={ data.design == 0 }>
|
||||
<virtual v-if="data.design == 0">
|
||||
<p class="title">%fa:server%%i18n:desktop.tags.mk-server-home-widget.title%</p>
|
||||
<button @click="toggle" title="%i18n:desktop.tags.mk-server-home-widget.toggle%">%fa:sort%</button>
|
||||
</virtual>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<mk-server-home-widget-cpu-and-memory-usage if={ !initializing } show={ data.view == 0 } connection={ connection }/>
|
||||
<mk-server-home-widget-cpu if={ !initializing } show={ data.view == 1 } connection={ connection } meta={ meta }/>
|
||||
<mk-server-home-widget-memory if={ !initializing } show={ data.view == 2 } connection={ connection }/>
|
||||
<mk-server-home-widget-disk if={ !initializing } show={ data.view == 3 } connection={ connection }/>
|
||||
<mk-server-home-widget-uptimes if={ !initializing } show={ data.view == 4 } connection={ connection }/>
|
||||
<mk-server-home-widget-info if={ !initializing } show={ data.view == 5 } connection={ connection } meta={ meta }/>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<mk-server-home-widget-cpu-and-memory-usage v-if="!initializing" show={ data.view == 0 } connection={ connection }/>
|
||||
<mk-server-home-widget-cpu v-if="!initializing" show={ data.view == 1 } connection={ connection } meta={ meta }/>
|
||||
<mk-server-home-widget-memory v-if="!initializing" show={ data.view == 2 } connection={ connection }/>
|
||||
<mk-server-home-widget-disk v-if="!initializing" show={ data.view == 3 } connection={ connection }/>
|
||||
<mk-server-home-widget-uptimes v-if="!initializing" show={ data.view == 4 } connection={ connection }/>
|
||||
<mk-server-home-widget-info v-if="!initializing" show={ data.view == 5 } connection={ connection } meta={ meta }/>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<mk-slideshow-home-widget>
|
||||
<div @click="choose">
|
||||
<p if={ data.folder === undefined }>クリックしてフォルダを指定してください</p>
|
||||
<p if={ data.folder !== undefined && images.length == 0 && !fetching }>このフォルダには画像がありません</p>
|
||||
<p v-if="data.folder === undefined">クリックしてフォルダを指定してください</p>
|
||||
<p v-if="data.folder !== undefined && images.length == 0 && !fetching">このフォルダには画像がありません</p>
|
||||
<div ref="slideA" class="slide a"></div>
|
||||
<div ref="slideB" class="slide b"></div>
|
||||
</div>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<mk-timeline-home-widget>
|
||||
<mk-following-setuper if={ noFollowing }/>
|
||||
<div class="loading" if={ isLoading }>
|
||||
<mk-following-setuper v-if="noFollowing"/>
|
||||
<div class="loading" v-if="isLoading">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p class="empty" if={ isEmpty && !isLoading }>%fa:R comments%自分の投稿や、自分がフォローしているユーザーの投稿が表示されます。</p>
|
||||
<p class="empty" v-if="isEmpty && !isLoading">%fa:R comments%自分の投稿や、自分がフォローしているユーザーの投稿が表示されます。</p>
|
||||
<mk-timeline ref="timeline" hide={ isLoading }>
|
||||
<yield to="footer">
|
||||
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
|
||||
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual>
|
||||
<virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
|
||||
<virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
|
||||
</yield/>
|
||||
</mk-timeline>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<mk-trends-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:fire%%i18n:desktop.tags.mk-trends-home-widget.title%</p>
|
||||
<button @click="fetch" title="%i18n:desktop.tags.mk-trends-home-widget.refresh%">%fa:sync%</button>
|
||||
</virtual>
|
||||
<div class="post" if={ !loading && post != null }>
|
||||
<div class="post" v-if="!loading && post != null">
|
||||
<p class="text"><a href="/{ post.user.username }/{ post.id }">{ post.text }</a></p>
|
||||
<p class="author">―<a href="/{ post.user.username }">@{ post.user.username }</a></p>
|
||||
</div>
|
||||
<p class="empty" if={ !loading && post == null }>%i18n:desktop.tags.mk-trends-home-widget.nothing%</p>
|
||||
<p class="loading" if={ loading }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<p class="empty" v-if="!loading && post == null">%i18n:desktop.tags.mk-trends-home-widget.nothing%</p>
|
||||
<p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<mk-user-recommendation-home-widget>
|
||||
<virtual if={ !data.compact }>
|
||||
<virtual v-if="!data.compact">
|
||||
<p class="title">%fa:users%%i18n:desktop.tags.mk-user-recommendation-home-widget.title%</p>
|
||||
<button @click="refresh" title="%i18n:desktop.tags.mk-user-recommendation-home-widget.refresh%">%fa:sync%</button>
|
||||
</virtual>
|
||||
<div class="user" if={ !loading && users.length != 0 } each={ _user in users }>
|
||||
<div class="user" v-if="!loading && users.length != 0" each={ _user in users }>
|
||||
<a class="avatar-anchor" href={ '/' + _user.username }>
|
||||
<img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/>
|
||||
</a>
|
||||
|
@ -13,8 +13,8 @@
|
|||
</div>
|
||||
<mk-follow-button user={ _user }/>
|
||||
</div>
|
||||
<p class="empty" if={ !loading && users.length == 0 }>%i18n:desktop.tags.mk-user-recommendation-home-widget.no-one%</p>
|
||||
<p class="loading" if={ loading }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<p class="empty" v-if="!loading && users.length == 0">%i18n:desktop.tags.mk-user-recommendation-home-widget.no-one%</p>
|
||||
<p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-home data-customize={ opts.customize }>
|
||||
<div class="customize" if={ opts.customize }>
|
||||
<div class="customize" v-if="opts.customize">
|
||||
<a href="/">%fa:check%完了</a>
|
||||
<div>
|
||||
<div class="adder">
|
||||
|
@ -40,9 +40,9 @@
|
|||
<div ref="left" data-place="left"></div>
|
||||
</div>
|
||||
<main ref="main">
|
||||
<div class="maintop" ref="maintop" data-place="main" if={ opts.customize }></div>
|
||||
<mk-timeline-home-widget ref="tl" if={ mode == 'timeline' }/>
|
||||
<mk-mentions-home-widget ref="tl" if={ mode == 'mentions' }/>
|
||||
<div class="maintop" ref="maintop" data-place="main" v-if="opts.customize"></div>
|
||||
<mk-timeline-home-widget ref="tl" v-if="mode == 'timeline'"/>
|
||||
<mk-mentions-home-widget ref="tl" v-if="mode == 'mentions'"/>
|
||||
</main>
|
||||
<div class="right">
|
||||
<div ref="right" data-place="right"></div>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<span class="username">@{ user.username }</span>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p class="followed" if={ user.is_followed }>フォローされています</p>
|
||||
<p class="followed" v-if="user.is_followed">フォローされています</p>
|
||||
<div class="description">{ user.description }</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<mk-notifications>
|
||||
<div class="notifications" if={ notifications.length != 0 }>
|
||||
<div class="notifications" v-if="notifications.length != 0">
|
||||
<virtual each={ notification, i in notifications }>
|
||||
<div class="notification { 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 } data-user-preview={ notification.user.id }>
|
||||
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } 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 } data-user-preview={ notification.post.user_id }>
|
||||
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -25,7 +25,7 @@
|
|||
</a>
|
||||
</div>
|
||||
</virtual>
|
||||
<virtual if={ notification.type == 'quote' }>
|
||||
<virtual v-if="notification.type == 'quote'">
|
||||
<a class="avatar-anchor" href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>
|
||||
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -34,7 +34,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 } data-user-preview={ notification.user.id }>
|
||||
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -42,7 +42,7 @@
|
|||
<p>%fa:user-plus%<a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p>
|
||||
</div>
|
||||
</virtual>
|
||||
<virtual if={ notification.type == 'reply' }>
|
||||
<virtual v-if="notification.type == 'reply'">
|
||||
<a class="avatar-anchor" href={ '/' + notification.post.user.username } data-user-preview={ notification.post.user_id }>
|
||||
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -51,7 +51,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 } data-user-preview={ notification.post.user_id }>
|
||||
<img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -60,7 +60,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 } data-user-preview={ notification.user.id }>
|
||||
<img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
|
||||
</a>
|
||||
|
@ -72,17 +72,17 @@
|
|||
</div>
|
||||
</virtual>
|
||||
</div>
|
||||
<p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }>
|
||||
<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 { fetching: fetchingMoreNotifications }" if={ moreNotifications } @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }>
|
||||
<virtual if={ fetchingMoreNotifications }>%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' }
|
||||
<button class="more { fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }>
|
||||
<virtual v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' }
|
||||
</button>
|
||||
<p class="empty" if={ notifications.length == 0 && !loading }>ありません!</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">ありません!</p>
|
||||
<p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
<div>
|
||||
<h1>どこにいても、ここにあります</h1>
|
||||
<p>ようこそ! MisskeyはTwitter風ミニブログSNSです――思ったこと、共有したいことをシンプルに書き残せます。タイムラインを見れば、皆の反応や皆がどう思っているのかもすぐにわかります。</p>
|
||||
<p if={ stats }>これまでに{ stats.posts_count }投稿されました</p>
|
||||
<p v-if="stats">これまでに{ stats.posts_count }投稿されました</p>
|
||||
</div>
|
||||
<div>
|
||||
<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">わかった</button>
|
||||
</div>
|
||||
|
@ -152,7 +152,7 @@
|
|||
<mk-entrance-signin>
|
||||
<a class="help" href={ _DOCS_URL_ + '/help' } title="お困りですか?">%fa:question%</a>
|
||||
<div class="form">
|
||||
<h1><img if={ user } src={ user.avatar_url + '?thumbnail&size=32' }/>
|
||||
<h1><img v-if="user" src={ user.avatar_url + '?thumbnail&size=32' }/>
|
||||
<p>{ user ? user.name : 'アカウント' }</p>
|
||||
</h1>
|
||||
<mk-signin ref="signin"/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-messaging-room-page>
|
||||
<mk-messaging-room if={ user } user={ user } is-naked={ true }/>
|
||||
<mk-messaging-room v-if="user" user={ user } is-naked={ true }/>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<mk-post-page>
|
||||
<mk-ui ref="ui">
|
||||
<main if={ !parent.fetching }>
|
||||
<a if={ parent.post.next } href={ parent.post.next }>%fa:angle-up%%i18n:desktop.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:desktop.tags.mk-post-page.next%</a>
|
||||
<mk-post-detail ref="detail" post={ parent.post }/>
|
||||
<a if={ parent.post.prev } href={ parent.post.prev }>%fa:angle-down%%i18n:desktop.tags.mk-post-page.prev%</a>
|
||||
<a v-if="parent.post.prev" href={ parent.post.prev }>%fa:angle-down%%i18n:desktop.tags.mk-post-page.prev%</a>
|
||||
</main>
|
||||
</mk-ui>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</header>
|
||||
<div class="body">
|
||||
<div class="text" ref="text"></div>
|
||||
<div class="media" if={ post.media }>
|
||||
<div class="media" v-if="post.media">
|
||||
<mk-images images={ post.media }/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<mk-post-detail title={ title }>
|
||||
<div class="main">
|
||||
<button class="read-more" if={ p.reply && p.reply.reply_id && context == null } title="会話をもっと読み込む" @click="loadContext" disabled={ contextFetching }>
|
||||
<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" title="会話をもっと読み込む" @click="loadContext" disabled={ contextFetching }>
|
||||
<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 } data-user-preview={ post.user_id }>
|
||||
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
|
||||
|
@ -36,28 +36,28 @@
|
|||
</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>
|
||||
<footer>
|
||||
<mk-reactions-viewer post={ p }/>
|
||||
<button @click="reply" title="返信">
|
||||
%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="リアクション">
|
||||
%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>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<mk-post-form-window>
|
||||
<mk-window ref="window" is-modal={ true }>
|
||||
<yield to="header">
|
||||
<span if={ !parent.opts.reply }>%i18n:desktop.tags.mk-post-form-window.post%</span>
|
||||
<span if={ parent.opts.reply }>%i18n:desktop.tags.mk-post-form-window.reply%</span>
|
||||
<span class="files" if={ parent.files.length != 0 }>{ '%i18n:desktop.tags.mk-post-form-window.attaches%'.replace('{}', parent.files.length) }</span>
|
||||
<span class="uploading-files" if={ parent.uploadingFiles.length != 0 }>{ '%i18n:desktop.tags.mk-post-form-window.uploading-media%'.replace('{}', parent.uploadingFiles.length) }<mk-ellipsis/></span>
|
||||
<span v-if="!parent.opts.reply">%i18n:desktop.tags.mk-post-form-window.post%</span>
|
||||
<span v-if="parent.opts.reply">%i18n:desktop.tags.mk-post-form-window.reply%</span>
|
||||
<span class="files" v-if="parent.files.length != 0">{ '%i18n:desktop.tags.mk-post-form-window.attaches%'.replace('{}', parent.files.length) }</span>
|
||||
<span class="uploading-files" v-if="parent.uploadingFiles.length != 0">{ '%i18n:desktop.tags.mk-post-form-window.uploading-media%'.replace('{}', parent.uploadingFiles.length) }<mk-ellipsis/></span>
|
||||
</yield>
|
||||
<yield to="content">
|
||||
<div class="ref" if={ parent.opts.reply }>
|
||||
<div class="ref" v-if="parent.opts.reply">
|
||||
<mk-post-preview post={ parent.opts.reply }/>
|
||||
</div>
|
||||
<div class="body">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</ul>
|
||||
<p class="remain">{ 4 - files.length }/4</p>
|
||||
</div>
|
||||
<mk-poll-editor if={ poll } ref="poll" ondestroy={ onPollDestroyed }/>
|
||||
<mk-poll-editor v-if="poll" ref="poll" ondestroy={ onPollDestroyed }/>
|
||||
</div>
|
||||
<mk-uploader ref="uploader"/>
|
||||
<button ref="upload" title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" @click="selectFile">%fa:upload%</button>
|
||||
|
@ -19,10 +19,10 @@
|
|||
<button class="poll" title="%i18n:desktop.tags.mk-post-form.create-poll%" @click="addPoll">%fa:chart-pie%</button>
|
||||
<p class="text-count { over: refs.text.value.length > 1000 }">{ '%i18n:desktop.tags.mk-post-form.text-remain%'.replace('{}', 1000 - refs.text.value.length) }</p>
|
||||
<button class={ wait: wait } ref="submit" disabled={ wait || (refs.text.value.length == 0 && files.length == 0 && !poll && !repost) } @click="post">
|
||||
{ wait ? '%i18n:desktop.tags.mk-post-form.posting%' : submitText }<mk-ellipsis if={ wait }/>
|
||||
{ wait ? '%i18n:desktop.tags.mk-post-form.posting%' : submitText }<mk-ellipsis v-if="wait"/>
|
||||
</button>
|
||||
<input ref="file" type="file" accept="image/*" multiple="multiple" tabindex="-1" onchange={ changeFile }/>
|
||||
<div class="dropzone" if={ draghover }></div>
|
||||
<div class="dropzone" v-if="draghover"></div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
<yield to="header">{ parent.title }<mk-ellipsis/></yield>
|
||||
<yield to="content">
|
||||
<div class="body">
|
||||
<p class="init" if={ isNaN(parent.value) }>待機中<mk-ellipsis/></p>
|
||||
<p class="percentage" if={ !isNaN(parent.value) }>{ Math.floor((parent.value / parent.max) * 100) }</p>
|
||||
<progress if={ !isNaN(parent.value) && parent.value < parent.max } value={ isNaN(parent.value) ? 0 : parent.value } max={ parent.max }></progress>
|
||||
<div class="progress waiting" if={ parent.value >= parent.max }></div>
|
||||
<p class="init" v-if="isNaN(parent.value)">待機中<mk-ellipsis/></p>
|
||||
<p class="percentage" v-if="!isNaN(parent.value)">{ Math.floor((parent.value / parent.max) * 100) }</p>
|
||||
<progress v-if="!isNaN(parent.value) && parent.value < parent.max" value={ isNaN(parent.value) ? 0 : parent.value } max={ parent.max }></progress>
|
||||
<div class="progress waiting" v-if="parent.value >= parent.max"></div>
|
||||
</div>
|
||||
</yield>
|
||||
</mk-window>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<mk-repost-form>
|
||||
<mk-post-preview post={ opts.post }/>
|
||||
<virtual if={ !quote }>
|
||||
<virtual v-if="!quote">
|
||||
<footer>
|
||||
<a class="quote" if={ !quote } @click="onquote">%i18n:desktop.tags.mk-repost-form.quote%</a>
|
||||
<a class="quote" v-if="!quote" @click="onquote">%i18n:desktop.tags.mk-repost-form.quote%</a>
|
||||
<button class="cancel" @click="cancel">%i18n:desktop.tags.mk-repost-form.cancel%</button>
|
||||
<button class="ok" @click="ok" disabled={ wait }>{ wait ? '%i18n:desktop.tags.mk-repost-form.reposting%' : '%i18n:desktop.tags.mk-repost-form.repost%' }</button>
|
||||
</footer>
|
||||
</virtual>
|
||||
<virtual if={ quote }>
|
||||
<virtual v-if="quote">
|
||||
<mk-post-form ref="form" repost={ opts.post }/>
|
||||
</virtual>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-search-posts>
|
||||
<div class="loading" if={ isLoading }>
|
||||
<div class="loading" v-if="isLoading">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p class="empty" if={ isEmpty }>%fa:search%「{ query }」に関する投稿は見つかりませんでした。</p>
|
||||
<p class="empty" v-if="isEmpty">%fa:search%「{ query }」に関する投稿は見つかりませんでした。</p>
|
||||
<mk-timeline ref="timeline">
|
||||
<yield to="footer">
|
||||
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
|
||||
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual>
|
||||
<virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
|
||||
<virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
|
||||
</yield/>
|
||||
</mk-timeline>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<mk-window ref="window" is-modal={ true } width={ '800px' } height={ '500px' }>
|
||||
<yield to="header">
|
||||
<mk-raw content={ parent.title }/>
|
||||
<span class="count" if={ parent.multiple && parent.files.length > 0 }>({ parent.files.length }ファイル選択中)</span>
|
||||
<span class="count" v-if="parent.multiple && parent.files.length > 0">({ parent.files.length }ファイル選択中)</span>
|
||||
</yield>
|
||||
<yield to="content">
|
||||
<mk-drive-browser ref="browser" multiple={ parent.multiple }/>
|
||||
|
|
|
@ -265,12 +265,12 @@
|
|||
<mk-2fa-setting>
|
||||
<p>%i18n:desktop.tags.mk-2fa-setting.intro%<a href="%i18n:desktop.tags.mk-2fa-setting.url%" target="_blank">%i18n:desktop.tags.mk-2fa-setting.detail%</a></p>
|
||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:desktop.tags.mk-2fa-setting.caution%</p></div>
|
||||
<p if={ !data && !I.two_factor_enabled }><button @click="register" class="ui primary">%i18n:desktop.tags.mk-2fa-setting.register%</button></p>
|
||||
<virtual if={ I.two_factor_enabled }>
|
||||
<p v-if="!data && !I.two_factor_enabled"><button @click="register" class="ui primary">%i18n:desktop.tags.mk-2fa-setting.register%</button></p>
|
||||
<virtual v-if="I.two_factor_enabled">
|
||||
<p>%i18n:desktop.tags.mk-2fa-setting.already-registered%</p>
|
||||
<button @click="unregister" class="ui">%i18n:desktop.tags.mk-2fa-setting.unregister%</button>
|
||||
</virtual>
|
||||
<div if={ data }>
|
||||
<div v-if="data">
|
||||
<ol>
|
||||
<li>%i18n:desktop.tags.mk-2fa-setting.authenticator% <a href="https://support.google.com/accounts/answer/1066447" target="_blank">%i18n:desktop.tags.mk-2fa-setting.howtoinstall%</a></li>
|
||||
<li>%i18n:desktop.tags.mk-2fa-setting.scan%<br><img src={ data.qr }></li>
|
||||
|
@ -394,10 +394,10 @@
|
|||
</mk-drive-setting>
|
||||
|
||||
<mk-mute-setting>
|
||||
<div class="none ui info" if={ !fetching && users.length == 0 }>
|
||||
<div class="none ui info" v-if="!fetching && users.length == 0">
|
||||
<p>%fa:info-circle%%i18n:desktop.tags.mk-mute-setting.no-users%</p>
|
||||
</div>
|
||||
<div class="users" if={ users.length != 0 }>
|
||||
<div class="users" v-if="users.length != 0">
|
||||
<div each={ user in users }>
|
||||
<p><b>{ user.name }</b> @{ user.username }</p>
|
||||
</div>
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
<mk-sub-post-content>
|
||||
<div class="body">
|
||||
<a class="reply" if={ post.reply_id }>
|
||||
<a class="reply" v-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>
|
||||
<a class="quote" v-if="post.repost_id" href={ '/post:' + post.repost_id }>RP: ...</a>
|
||||
</div>
|
||||
<details if={ post.media }>
|
||||
<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>投票</summary>
|
||||
<mk-poll post={ post }/>
|
||||
</details>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<mk-timeline>
|
||||
<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 }><span>%fa:angle-up%{ post._datetext }</span><span>%fa:angle-down%{ posts[i + 1]._datetext }</span></p>
|
||||
<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 data-yield="footer">
|
||||
<yield from="footer"/>
|
||||
|
@ -82,10 +82,10 @@
|
|||
</mk-timeline>
|
||||
|
||||
<mk-timeline-post tabindex="-1" title={ title } onkeydown={ onKeyDown } dblclick={ onDblClick }>
|
||||
<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 } data-user-preview={ post.user_id }>
|
||||
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
|
||||
|
@ -101,10 +101,10 @@
|
|||
<div class="main">
|
||||
<header>
|
||||
<a class="name" href={ '/' + p.user.username } data-user-preview={ p.user.id }>{ 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>
|
||||
<div class="info">
|
||||
<span class="app" if={ p.app }>via <b>{ p.app.name }</b></span>
|
||||
<span class="app" v-if="p.app">via <b>{ p.app.name }</b></span>
|
||||
<a class="created-at" href={ url }>
|
||||
<mk-time time={ p.created_at }/>
|
||||
</a>
|
||||
|
@ -112,43 +112,43 @@
|
|||
</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"/>
|
||||
<div class="repost" if={ p.repost }>%fa:quote-right -flip-h%
|
||||
<mk-poll v-if="p.poll" post={ p } ref="pollViewer"/>
|
||||
<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" title="%i18n:desktop.tags.mk-timeline-post.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="%i18n:desktop.tags.mk-timeline-post.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:desktop.tags.mk-timeline-post.add-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>
|
||||
<button @click="toggleDetail" title="%i18n:desktop.tags.mk-timeline-post.detail">
|
||||
<virtual if={ !isDetailOpened }>%fa:caret-down%</virtual>
|
||||
<virtual if={ isDetailOpened }>%fa:caret-up%</virtual>
|
||||
<virtual v-if="!isDetailOpened">%fa:caret-down%</virtual>
|
||||
<virtual v-if="isDetailOpened">%fa:caret-up%</virtual>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
||||
<div class="detail" if={ isDetailOpened }>
|
||||
<div class="detail" v-if="isDetailOpened">
|
||||
<mk-post-status-graph width="462" height="130" post={ p }/>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<mk-ui>
|
||||
<mk-ui-header page={ opts.page }/>
|
||||
<mk-set-avatar-suggestion if={ SIGNIN && I.avatar_id == null }/>
|
||||
<mk-set-banner-suggestion if={ SIGNIN && I.banner_id == null }/>
|
||||
<mk-set-avatar-suggestion v-if="SIGNIN && I.avatar_id == null"/>
|
||||
<mk-set-banner-suggestion v-if="SIGNIN && I.banner_id == null"/>
|
||||
<div class="content">
|
||||
<yield />
|
||||
</div>
|
||||
<mk-stream-indicator if={ SIGNIN }/>
|
||||
<mk-stream-indicator v-if="SIGNIN"/>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
@ -37,7 +37,7 @@
|
|||
</mk-ui>
|
||||
|
||||
<mk-ui-header>
|
||||
<mk-donation if={ SIGNIN && I.client_settings.show_donation }/>
|
||||
<mk-donation v-if="SIGNIN && I.client_settings.show_donation"/>
|
||||
<mk-special-message/>
|
||||
<div class="main">
|
||||
<div class="backdrop"></div>
|
||||
|
@ -48,9 +48,9 @@
|
|||
</div>
|
||||
<div class="right">
|
||||
<mk-ui-header-search/>
|
||||
<mk-ui-header-account if={ SIGNIN }/>
|
||||
<mk-ui-header-notifications if={ SIGNIN }/>
|
||||
<mk-ui-header-post-button if={ SIGNIN }/>
|
||||
<mk-ui-header-account v-if="SIGNIN"/>
|
||||
<mk-ui-header-notifications v-if="SIGNIN"/>
|
||||
<mk-ui-header-post-button v-if="SIGNIN"/>
|
||||
<mk-ui-header-clock/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -230,9 +230,9 @@
|
|||
|
||||
<mk-ui-header-notifications>
|
||||
<button data-active={ isOpen } @click="toggle" title="%i18n:desktop.tags.mk-ui-header-notifications.title%">
|
||||
%fa:R bell%<virtual if={ hasUnreadNotifications }>%fa:circle%</virtual>
|
||||
%fa:R bell%<virtual v-if="hasUnreadNotifications">%fa:circle%</virtual>
|
||||
</button>
|
||||
<div class="notifications" if={ isOpen }>
|
||||
<div class="notifications" v-if="isOpen">
|
||||
<mk-notifications/>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
|
@ -392,7 +392,7 @@
|
|||
|
||||
<mk-ui-header-nav>
|
||||
<ul>
|
||||
<virtual if={ SIGNIN }>
|
||||
<virtual v-if="SIGNIN">
|
||||
<li class="home { active: page == 'home' }">
|
||||
<a href={ _URL_ }>
|
||||
%fa:home%
|
||||
|
@ -403,7 +403,7 @@
|
|||
<a @click="messaging">
|
||||
%fa:comments%
|
||||
<p>%i18n:desktop.tags.mk-ui-header-nav.messaging%</p>
|
||||
<virtual if={ hasUnreadMessagingMessages }>%fa:circle%</virtual>
|
||||
<virtual v-if="hasUnreadMessagingMessages">%fa:circle%</virtual>
|
||||
</a>
|
||||
</li>
|
||||
</virtual>
|
||||
|
@ -630,10 +630,10 @@
|
|||
|
||||
<mk-ui-header-account>
|
||||
<button class="header" data-active={ isOpen.toString() } @click="toggle">
|
||||
<span class="username">{ I.username }<virtual if={ !isOpen }>%fa:angle-down%</virtual><virtual if={ isOpen }>%fa:angle-up%</virtual></span>
|
||||
<span class="username">{ I.username }<virtual v-if="!isOpen">%fa:angle-down%</virtual><virtual v-if="isOpen">%fa:angle-up%</virtual></span>
|
||||
<img class="avatar" src={ I.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
|
||||
</button>
|
||||
<div class="menu" if={ isOpen }>
|
||||
<div class="menu" v-if="isOpen">
|
||||
<ul>
|
||||
<li>
|
||||
<a href={ '/' + I.username }>%fa:user%%i18n:desktop.tags.mk-ui-header-account.profile%%fa:angle-right%</a>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<mk-user-preview>
|
||||
<virtual if={ user != null }>
|
||||
<virtual v-if="user != null">
|
||||
<div class="banner" style={ user.banner_url ? 'background-image: url(' + user.banner_url + '?thumbnail&size=512)' : '' }></div><a class="avatar" href={ '/' + user.username } target="_blank"><img src={ user.avatar_url + '?thumbnail&size=64' } alt="avatar"/></a>
|
||||
<div class="title">
|
||||
<p class="name">{ user.name }</p>
|
||||
|
@ -17,7 +17,7 @@
|
|||
<p>フォロワー</p><a>{ user.followers_count }</a>
|
||||
</div>
|
||||
</div>
|
||||
<mk-follow-button if={ SIGNIN && user.id != I.id } user={ userPromise }/>
|
||||
<mk-follow-button v-if="SIGNIN && user.id != I.id" user={ userPromise }/>
|
||||
</virtual>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<header>
|
||||
<span data-is-active={ mode == 'default' } @click="setMode.bind(this, 'default')">投稿</span><span data-is-active={ mode == 'with-replies' } @click="setMode.bind(this, 'with-replies')">投稿と返信</span>
|
||||
</header>
|
||||
<div class="loading" if={ isLoading }>
|
||||
<div class="loading" v-if="isLoading">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p class="empty" if={ isEmpty }>%fa:R comments%このユーザーはまだ何も投稿していないようです。</p>
|
||||
<p class="empty" v-if="isEmpty">%fa:R comments%このユーザーはまだ何も投稿していないようです。</p>
|
||||
<mk-timeline ref="timeline">
|
||||
<yield to="footer">
|
||||
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual>
|
||||
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual>
|
||||
<virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
|
||||
<virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
|
||||
</yield/>
|
||||
</mk-timeline>
|
||||
<style lang="stylus" scoped>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<mk-user>
|
||||
<div class="user" if={ !fetching }>
|
||||
<div class="user" v-if="!fetching">
|
||||
<header>
|
||||
<mk-user-header user={ user }/>
|
||||
</header>
|
||||
<mk-user-home if={ page == 'home' } user={ user }/>
|
||||
<mk-user-graphs if={ page == 'graphs' } user={ user }/>
|
||||
<mk-user-home v-if="page == 'home'" user={ user }/>
|
||||
<mk-user-graphs v-if="page == 'graphs'" user={ user }/>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
@ -48,7 +48,7 @@
|
|||
<div class="title">
|
||||
<p class="name" href={ '/' + user.username }>{ user.name }</p>
|
||||
<p class="username">@{ user.username }</p>
|
||||
<p class="location" if={ user.profile.location }>%fa:map-marker%{ user.profile.location }</p>
|
||||
<p class="location" v-if="user.profile.location">%fa:map-marker%{ user.profile.location }</p>
|
||||
</div>
|
||||
<footer>
|
||||
<a href={ '/' + user.username } data-active={ parent.page == 'home' }>%fa:home%概要</a>
|
||||
|
@ -224,17 +224,17 @@
|
|||
</mk-user-header>
|
||||
|
||||
<mk-user-profile>
|
||||
<div class="friend-form" if={ SIGNIN && I.id != user.id }>
|
||||
<div class="friend-form" v-if="SIGNIN && I.id != user.id">
|
||||
<mk-big-follow-button user={ user }/>
|
||||
<p class="followed" if={ user.is_followed }>%i18n:desktop.tags.mk-user.follows-you%</p>
|
||||
<p if={ user.is_muted }>%i18n:desktop.tags.mk-user.muted% <a @click="unmute">%i18n:desktop.tags.mk-user.unmute%</a></p>
|
||||
<p if={ !user.is_muted }><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
|
||||
<p class="followed" v-if="user.is_followed">%i18n:desktop.tags.mk-user.follows-you%</p>
|
||||
<p v-if="user.is_muted">%i18n:desktop.tags.mk-user.muted% <a @click="unmute">%i18n:desktop.tags.mk-user.unmute%</a></p>
|
||||
<p v-if="!user.is_muted"><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
|
||||
</div>
|
||||
<div class="description" if={ user.description }>{ user.description }</div>
|
||||
<div class="birthday" if={ user.profile.birthday }>
|
||||
<div class="description" v-if="user.description">{ user.description }</div>
|
||||
<div class="birthday" v-if="user.profile.birthday">
|
||||
<p>%fa:birthday-cake%{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)</p>
|
||||
</div>
|
||||
<div class="twitter" if={ user.twitter }>
|
||||
<div class="twitter" v-if="user.twitter">
|
||||
<p>%fa:B twitter%<a href={ 'https://twitter.com/' + user.twitter.screen_name } target="_blank">@{ user.twitter.screen_name }</a></p>
|
||||
</div>
|
||||
<div class="status">
|
||||
|
@ -355,13 +355,13 @@
|
|||
|
||||
<mk-user-photos>
|
||||
<p class="title">%fa:camera%%i18n:desktop.tags.mk-user.photos.title%</p>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.photos.loading%<mk-ellipsis/></p>
|
||||
<div class="stream" if={ !initializing && images.length > 0 }>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.photos.loading%<mk-ellipsis/></p>
|
||||
<div class="stream" v-if="!initializing && images.length > 0">
|
||||
<virtual each={ image in images }>
|
||||
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
|
||||
</virtual>
|
||||
</div>
|
||||
<p class="empty" if={ !initializing && images.length == 0 }>%i18n:desktop.tags.mk-user.photos.no-photos%</p>
|
||||
<p class="empty" v-if="!initializing && images.length == 0">%i18n:desktop.tags.mk-user.photos.no-photos%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
@ -449,8 +449,8 @@
|
|||
|
||||
<mk-user-frequently-replied-users>
|
||||
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.frequently-replied-users.title%</p>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.frequently-replied-users.loading%<mk-ellipsis/></p>
|
||||
<div class="user" if={ !initializing && users.length != 0 } each={ _user in users }>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.frequently-replied-users.loading%<mk-ellipsis/></p>
|
||||
<div class="user" v-if="!initializing && users.length != 0" each={ _user in users }>
|
||||
<a class="avatar-anchor" href={ '/' + _user.username }>
|
||||
<img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/>
|
||||
</a>
|
||||
|
@ -460,7 +460,7 @@
|
|||
</div>
|
||||
<mk-follow-button user={ _user }/>
|
||||
</div>
|
||||
<p class="empty" if={ !initializing && users.length == 0 }>%i18n:desktop.tags.mk-user.frequently-replied-users.no-users%</p>
|
||||
<p class="empty" v-if="!initializing && users.length == 0">%i18n:desktop.tags.mk-user.frequently-replied-users.no-users%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
@ -561,13 +561,13 @@
|
|||
|
||||
<mk-user-followers-you-know>
|
||||
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.followers-you-know.title%</p>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
|
||||
<div if={ !initializing && users.length > 0 }>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.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:desktop.tags.mk-user.followers-you-know.no-users%</p>
|
||||
<p class="empty" v-if="!initializing && users.length == 0">%i18n:desktop.tags.mk-user.followers-you-know.no-users%</p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
@ -638,12 +638,12 @@
|
|||
<div ref="left">
|
||||
<mk-user-profile user={ user }/>
|
||||
<mk-user-photos user={ user }/>
|
||||
<mk-user-followers-you-know if={ SIGNIN && I.id !== user.id } user={ user }/>
|
||||
<mk-user-followers-you-know v-if="SIGNIN && I.id !== user.id" user={ user }/>
|
||||
<p>%i18n:desktop.tags.mk-user.last-used-at%: <b><mk-time time={ user.last_used_at }/></b></p>
|
||||
</div>
|
||||
</div>
|
||||
<main>
|
||||
<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 }/>
|
||||
<mk-user-timeline ref="tl" user={ user }/>
|
||||
</main>
|
||||
<div>
|
||||
|
@ -784,7 +784,7 @@
|
|||
</mk-user-graphs>
|
||||
|
||||
<mk-user-graphs-activity-chart>
|
||||
<svg if={ data } ref="canvas" viewBox="0 0 365 1" preserveAspectRatio="none">
|
||||
<svg v-if="data" ref="canvas" viewBox="0 0 365 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 }
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
<nav>
|
||||
<div>
|
||||
<span data-is-active={ mode == 'all' } @click="setMode.bind(this, 'all')">すべて<span>{ opts.count }</span></span>
|
||||
<span if={ SIGNIN && opts.youKnowCount } data-is-active={ mode == 'iknow' } @click="setMode.bind(this, 'iknow')">知り合い<span>{ opts.youKnowCount }</span></span>
|
||||
<span v-if="SIGNIN && opts.youKnowCount" data-is-active={ mode == 'iknow' } @click="setMode.bind(this, 'iknow')">知り合い<span>{ opts.youKnowCount }</span></span>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="users" if={ !fetching && users.length != 0 }>
|
||||
<div class="users" v-if="!fetching && users.length != 0">
|
||||
<div each={ users }>
|
||||
<mk-list-user user={ this }/>
|
||||
</div>
|
||||
</div>
|
||||
<button class="more" if={ !fetching && next != null } @click="more" disabled={ moreFetching }>
|
||||
<span if={ !moreFetching }>もっと</span>
|
||||
<span if={ moreFetching }>読み込み中<mk-ellipsis/></span>
|
||||
<button class="more" v-if="!fetching && next != null" @click="more" disabled={ moreFetching }>
|
||||
<span v-if="!moreFetching">もっと</span>
|
||||
<span v-if="moreFetching">読み込み中<mk-ellipsis/></span>
|
||||
</button>
|
||||
<p class="no" if={ !fetching && users.length == 0 }>{ opts.noUsers }</p>
|
||||
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
|
||||
<p class="no" v-if="!fetching && users.length == 0">{ opts.noUsers }</p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<mk-activity-widget data-melt={ design == 2 }>
|
||||
<virtual if={ design == 0 }>
|
||||
<virtual v-if="design == 0">
|
||||
<p class="title">%fa:chart-bar%%i18n:desktop.tags.mk-activity-widget.title%</p>
|
||||
<button @click="toggle" title="%i18n:desktop.tags.mk-activity-widget.toggle%">%fa:sort%</button>
|
||||
</virtual>
|
||||
<p class="initializing" if={ initializing }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<mk-activity-widget-calender if={ !initializing && view == 0 } data={ [].concat(activity) }/>
|
||||
<mk-activity-widget-chart if={ !initializing && view == 1 } data={ [].concat(activity) }/>
|
||||
<p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<mk-activity-widget-calender v-if="!initializing && view == 0" data={ [].concat(activity) }/>
|
||||
<mk-activity-widget-chart v-if="!initializing && view == 1" data={ [].concat(activity) }/>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<mk-calendar-widget data-melt={ opts.design == 4 || opts.design == 5 }>
|
||||
<virtual if={ opts.design == 0 || opts.design == 1 }>
|
||||
<virtual v-if="opts.design == 0 || opts.design == 1">
|
||||
<button @click="prev" title="%i18n:desktop.tags.mk-calendar-widget.prev%">%fa:chevron-circle-left%</button>
|
||||
<p class="title">{ '%i18n:desktop.tags.mk-calendar-widget.title%'.replace('{1}', year).replace('{2}', month) }</p>
|
||||
<button @click="next" title="%i18n:desktop.tags.mk-calendar-widget.next%">%fa:chevron-circle-right%</button>
|
||||
</virtual>
|
||||
|
||||
<div class="calendar">
|
||||
<div class="weekday" if={ opts.design == 0 || opts.design == 2 || opts.design == 4} each={ day, i in Array(7).fill(0) }
|
||||
<div class="weekday" v-if="opts.design == 0 || opts.design == 2 || opts.design == 4} each={ day, i in Array(7).fill(0)"
|
||||
data-today={ year == today.getFullYear() && month == today.getMonth() + 1 && today.getDay() == i }
|
||||
data-is-donichi={ i == 0 || i == 6 }>{ weekdayText[i] }</div>
|
||||
<div each={ day, i in Array(paddingDays).fill(0) }></div>
|
||||
|
|
|
@ -5,20 +5,20 @@
|
|||
<header ref="header" onmousedown={ onHeaderMousedown }>
|
||||
<h1 data-yield="header"><yield from="header"/></h1>
|
||||
<div>
|
||||
<button class="popout" if={ popoutUrl } onmousedown={ repelMove } @click="popout" title="ポップアウト">%fa:R window-restore%</button>
|
||||
<button class="close" if={ canClose } onmousedown={ repelMove } @click="close" title="閉じる">%fa:times%</button>
|
||||
<button class="popout" v-if="popoutUrl" onmousedown={ repelMove } @click="popout" title="ポップアウト">%fa:R window-restore%</button>
|
||||
<button class="close" v-if="canClose" onmousedown={ repelMove } @click="close" title="閉じる">%fa:times%</button>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content" data-yield="content"><yield from="content"/></div>
|
||||
</div>
|
||||
<div class="handle top" if={ canResize } onmousedown={ onTopHandleMousedown }></div>
|
||||
<div class="handle right" if={ canResize } onmousedown={ onRightHandleMousedown }></div>
|
||||
<div class="handle bottom" if={ canResize } onmousedown={ onBottomHandleMousedown }></div>
|
||||
<div class="handle left" if={ canResize } onmousedown={ onLeftHandleMousedown }></div>
|
||||
<div class="handle top-left" if={ canResize } onmousedown={ onTopLeftHandleMousedown }></div>
|
||||
<div class="handle top-right" if={ canResize } onmousedown={ onTopRightHandleMousedown }></div>
|
||||
<div class="handle bottom-right" if={ canResize } onmousedown={ onBottomRightHandleMousedown }></div>
|
||||
<div class="handle bottom-left" if={ canResize } onmousedown={ onBottomLeftHandleMousedown }></div>
|
||||
<div class="handle top" v-if="canResize" onmousedown={ onTopHandleMousedown }></div>
|
||||
<div class="handle right" v-if="canResize" onmousedown={ onRightHandleMousedown }></div>
|
||||
<div class="handle bottom" v-if="canResize" onmousedown={ onBottomHandleMousedown }></div>
|
||||
<div class="handle left" v-if="canResize" onmousedown={ onLeftHandleMousedown }></div>
|
||||
<div class="handle top-left" v-if="canResize" onmousedown={ onTopLeftHandleMousedown }></div>
|
||||
<div class="handle top-right" v-if="canResize" onmousedown={ onTopRightHandleMousedown }></div>
|
||||
<div class="handle bottom-right" v-if="canResize" onmousedown={ onBottomRightHandleMousedown }></div>
|
||||
<div class="handle bottom-left" v-if="canResize" onmousedown={ onBottomLeftHandleMousedown }></div>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
<label>
|
||||
<p class="caption">Named ID</p>
|
||||
<input ref="nid" type="text" pattern="^[a-zA-Z0-9-]{3,30}$" placeholder="ex) misskey-for-ios" autocomplete="off" required="required" onkeyup={ onChangeNid }/>
|
||||
<p class="info" if={ nidState == 'wait' } style="color:#999">%fa:spinner .pulse .fw%確認しています...</p>
|
||||
<p class="info" if={ nidState == 'ok' } style="color:#3CB7B5">%fa:fw check%利用できます</p>
|
||||
<p class="info" if={ nidState == 'unavailable' } style="color:#FF1161">%fa:fw exclamation-triangle%既に利用されています</p>
|
||||
<p class="info" if={ nidState == 'error' } style="color:#FF1161">%fa:fw exclamation-triangle%通信エラー</p>
|
||||
<p class="info" if={ nidState == 'invalid-format' } style="color:#FF1161">%fa:fw exclamation-triangle%a~z、A~Z、0~9、-(ハイフン)が使えます</p>
|
||||
<p class="info" if={ nidState == 'min-range' } style="color:#FF1161">%fa:fw exclamation-triangle%3文字以上でお願いします!</p>
|
||||
<p class="info" if={ nidState == 'max-range' } style="color:#FF1161">%fa:fw exclamation-triangle%30文字以内でお願いします</p>
|
||||
<p class="info" v-if="nidState == 'wait'" style="color:#999">%fa:spinner .pulse .fw%確認しています...</p>
|
||||
<p class="info" v-if="nidState == 'ok'" style="color:#3CB7B5">%fa:fw check%利用できます</p>
|
||||
<p class="info" v-if="nidState == 'unavailable'" style="color:#FF1161">%fa:fw exclamation-triangle%既に利用されています</p>
|
||||
<p class="info" v-if="nidState == 'error'" style="color:#FF1161">%fa:fw exclamation-triangle%通信エラー</p>
|
||||
<p class="info" v-if="nidState == 'invalid-format'" style="color:#FF1161">%fa:fw exclamation-triangle%a~z、A~Z、0~9、-(ハイフン)が使えます</p>
|
||||
<p class="info" v-if="nidState == 'min-range'" style="color:#FF1161">%fa:fw exclamation-triangle%3文字以上でお願いします!</p>
|
||||
<p class="info" v-if="nidState == 'max-range'" style="color:#FF1161">%fa:fw exclamation-triangle%30文字以内でお願いします</p>
|
||||
</label>
|
||||
</section>
|
||||
<section class="description">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<mk-app-page>
|
||||
<p if={ fetching }>読み込み中</p>
|
||||
<main if={ !fetching }>
|
||||
<p v-if="fetching">読み込み中</p>
|
||||
<main v-if="!fetching">
|
||||
<header>
|
||||
<h1>{ app.name }</h1>
|
||||
</header>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<mk-apps-page>
|
||||
<h1>アプリを管理</h1><a href="/app/new">アプリ作成</a>
|
||||
<div class="apps">
|
||||
<p if={ fetching }>読み込み中</p>
|
||||
<virtual if={ !fetching }>
|
||||
<p if={ apps.length == 0 }>アプリなし</p>
|
||||
<ul if={ apps.length > 0 }>
|
||||
<p v-if="fetching">読み込み中</p>
|
||||
<virtual v-if="!fetching">
|
||||
<p v-if="apps.length == 0">アプリなし</p>
|
||||
<ul v-if="apps.length > 0">
|
||||
<li each={ app in apps }><a href={ '/app/' + app.id }>
|
||||
<p class="name">{ app.name }</p></a></li>
|
||||
</ul>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 }/>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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%
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue