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

View File

@ -12,15 +12,15 @@
<h2>このアプリは次の権限を要求しています:</h2> <h2>このアプリは次の権限を要求しています:</h2>
<ul> <ul>
<virtual each={ p in app.permission }> <virtual each={ p in app.permission }>
<li if={ p == 'account-read' }>アカウントの情報を見る。</li> <li v-if="p == 'account-read'">アカウントの情報を見る。</li>
<li if={ p == 'account-write' }>アカウントの情報を操作する。</li> <li v-if="p == 'account-write'">アカウントの情報を操作する。</li>
<li if={ p == 'post-write' }>投稿する。</li> <li v-if="p == 'post-write'">投稿する。</li>
<li if={ p == 'like-write' }>いいねしたりいいね解除する。</li> <li v-if="p == 'like-write'">いいねしたりいいね解除する。</li>
<li if={ p == 'following-write' }>フォローしたりフォロー解除する。</li> <li v-if="p == 'following-write'">フォローしたりフォロー解除する。</li>
<li if={ p == 'drive-read' }>ドライブを見る。</li> <li v-if="p == 'drive-read'">ドライブを見る。</li>
<li if={ p == 'drive-write' }>ドライブを操作する。</li> <li v-if="p == 'drive-write'">ドライブを操作する。</li>
<li if={ p == 'notification-read' }>通知を見る。</li> <li v-if="p == 'notification-read'">通知を見る。</li>
<li if={ p == 'notification-write' }>通知を操作する。</li> <li v-if="p == 'notification-write'">通知を操作する。</li>
</virtual> </virtual>
</ul> </ul>
</section> </section>

View File

@ -1,21 +1,21 @@
<mk-index> <mk-index>
<main if={ SIGNIN }> <main v-if="SIGNIN">
<p class="fetching" if={ fetching }>読み込み中<mk-ellipsis/></p> <p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
<mk-form ref="form" if={ state == 'waiting' } session={ session }/> <mk-form ref="form" v-if="state == 'waiting'" session={ session }/>
<div class="denied" if={ state == 'denied' }> <div class="denied" v-if="state == 'denied'">
<h1>アプリケーションの連携をキャンセルしました。</h1> <h1>アプリケーションの連携をキャンセルしました。</h1>
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p> <p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
</div> </div>
<div class="accepted" if={ state == 'accepted' }> <div class="accepted" v-if="state == 'accepted'">
<h1>{ session.app.is_authorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました'}</h1> <h1>{ session.app.is_authorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました'}</h1>
<p if={ session.app.callback_url }>アプリケーションに戻っています<mk-ellipsis/></p> <p v-if="session.app.callback_url">アプリケーションに戻っています<mk-ellipsis/></p>
<p if={ !session.app.callback_url }>アプリケーションに戻って、やっていってください。</p> <p v-if="!session.app.callback_url">アプリケーションに戻って、やっていってください。</p>
</div> </div>
<div class="error" if={ state == 'fetch-session-error' }> <div class="error" v-if="state == 'fetch-session-error'">
<p>セッションが存在しません。</p> <p>セッションが存在しません。</p>
</div> </div>
</main> </main>
<main class="signin" if={ !SIGNIN }> <main class="signin" v-if="!SIGNIN">
<h1>サインインしてください</h1> <h1>サインインしてください</h1>
<mk-signin/> <mk-signin/>
</main> </main>

View File

@ -1,12 +1,12 @@
<mk-channel> <mk-channel>
<mk-header/> <mk-header/>
<hr> <hr>
<main if={ !fetching }> <main v-if="!fetching">
<h1>{ channel.title }</h1> <h1>{ channel.title }</h1>
<div if={ SIGNIN }> <div v-if="SIGNIN">
<p if={ channel.is_watching }>このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p> <p v-if="channel.is_watching">このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
<p if={ !channel.is_watching }><a @click="watch">このチャンネルをウォッチする</a></p> <p v-if="!channel.is_watching"><a @click="watch">このチャンネルをウォッチする</a></p>
</div> </div>
<div class="share"> <div class="share">
@ -15,17 +15,17 @@
</div> </div>
<div class="body"> <div class="body">
<p if={ postsFetching }>読み込み中<mk-ellipsis/></p> <p v-if="postsFetching">読み込み中<mk-ellipsis/></p>
<div if={ !postsFetching }> <div v-if="!postsFetching">
<p if={ posts == null || posts.length == 0 }>まだ投稿がありません</p> <p v-if="posts == null || posts.length == 0">まだ投稿がありません</p>
<virtual if={ posts != null }> <virtual v-if="posts != null">
<mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/> <mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/>
</virtual> </virtual>
</div> </div>
</div> </div>
<hr> <hr>
<mk-channel-form if={ SIGNIN } channel={ channel } ref="form"/> <mk-channel-form v-if="SIGNIN" channel={ channel } ref="form"/>
<div if={ !SIGNIN }> <div v-if="!SIGNIN">
<p>参加するには<a href={ _URL_ }>ログインまたは新規登録</a>してください</p> <p>参加するには<a href={ _URL_ }>ログインまたは新規登録</a>してください</p>
</div> </div>
<hr> <hr>
@ -171,9 +171,9 @@
<span>ID:<i>{ post.user.username }</i></span> <span>ID:<i>{ post.user.username }</i></span>
</header> </header>
<div> <div>
<a if={ post.reply }>&gt;&gt;{ post.reply.index }</a> <a v-if="post.reply">&gt;&gt;{ post.reply.index }</a>
{ post.text } { post.text }
<div class="media" if={ post.media }> <div class="media" v-if="post.media">
<virtual each={ file in post.media }> <virtual each={ file in post.media }>
<a href={ file.url } target="_blank"> <a href={ file.url } target="_blank">
<img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/> <img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/>
@ -241,17 +241,17 @@
</mk-channel-post> </mk-channel-post>
<mk-channel-form> <mk-channel-form>
<p if={ reply }><b>&gt;&gt;{ reply.index }</b> ({ reply.user.name }): <a @click="clearReply">[x]</a></p> <p v-if="reply"><b>&gt;&gt;{ 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> <textarea ref="text" disabled={ wait } oninput={ update } onkeydown={ onkeydown } onpaste={ onpaste } placeholder="%i18n:ch.tags.mk-channel-form.textarea%"></textarea>
<div class="actions"> <div class="actions">
<button @click="selectFile">%fa:upload%%i18n:ch.tags.mk-channel-form.upload%</button> <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 @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"> <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> </button>
</div> </div>
<mk-uploader ref="uploader"/> <mk-uploader ref="uploader"/>
<ol if={ files }> <ol v-if="files">
<li each={ files }>{ name }</li> <li each={ files }>{ name }</li>
</ol> </ol>
<input ref="file" type="file" accept="image/*" multiple="multiple" onchange={ changeFile }/> <input ref="file" type="file" accept="image/*" multiple="multiple" onchange={ changeFile }/>

View File

@ -3,8 +3,8 @@
<a href={ _CH_URL_ }>Index</a> | <a href={ _URL_ }>Misskey</a> <a href={ _CH_URL_ }>Index</a> | <a href={ _URL_ }>Misskey</a>
</div> </div>
<div> <div>
<a if={ !SIGNIN } href={ _URL_ }>ログイン(新規登録)</a> <a v-if="!SIGNIN" href={ _URL_ }>ログイン(新規登録)</a>
<a if={ SIGNIN } href={ _URL_ + '/' + I.username }>{ I.username }</a> <a v-if="SIGNIN" href={ _URL_ + '/' + I.username }>{ I.username }</a>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -3,7 +3,7 @@
<hr> <hr>
<button @click="n">%i18n:ch.tags.mk-index.new%</button> <button @click="n">%i18n:ch.tags.mk-index.new%</button>
<hr> <hr>
<ul if={ channels }> <ul v-if="channels">
<li each={ channels }><a href={ '/' + this.id }>{ this.title }</a></li> <li each={ channels }><a href={ '/' + this.id }>{ this.title }</a></li>
</ul> </ul>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,5 +1,5 @@
<mk-activity-table> <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" <rect each={ data } width="1" height="1"
riot-x={ x } riot-y={ date.weekday } riot-x={ x } riot-y={ date.weekday }
rx="1" ry="1" rx="1" ry="1"

View File

@ -1,8 +1,8 @@
<mk-authorized-apps> <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> <p>%fa:info-circle%%i18n:common.tags.mk-authorized-apps.no-apps%</p>
</div> </div>
<div class="apps" if={ apps.length != 0 }> <div class="apps" v-if="apps.length != 0">
<div each={ app in apps }> <div each={ app in apps }>
<p><b>{ app.name }</b></p> <p><b>{ app.name }</b></p>
<p>{ app.description }</p> <p>{ app.description }</p>

View File

@ -8,8 +8,8 @@
}</a>{ }</a>{
'%i18n:common.tags.mk-error.description%'.substr('%i18n:common.tags.mk-error.description%'.indexOf('}') + 1) '%i18n:common.tags.mk-error.description%'.substr('%i18n:common.tags.mk-error.description%'.indexOf('}') + 1)
}</p> }</p>
<button if={ !troubleshooting } @click="troubleshoot">%i18n:common.tags.mk-error.troubleshoot%</button> <button v-if="!troubleshooting" @click="troubleshoot">%i18n:common.tags.mk-error.troubleshoot%</button>
<mk-troubleshooter if={ troubleshooting }/> <mk-troubleshooter v-if="troubleshooting"/>
<p class="thanks">%i18n:common.tags.mk-error.thanks%</p> <p class="thanks">%i18n:common.tags.mk-error.thanks%</p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
@ -98,15 +98,15 @@
<mk-troubleshooter> <mk-troubleshooter>
<h1>%fa:wrench%%i18n:common.tags.mk-error.troubleshooter.title%</h1> <h1>%fa:wrench%%i18n:common.tags.mk-error.troubleshooter.title%</h1>
<div> <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 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 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 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 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 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> </div>
<p if={ !end }>%i18n:common.tags.mk-error.troubleshooter.finding%<mk-ellipsis/></p> <p v-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 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 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="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 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 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="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> <style lang="stylus" scoped>
:scope :scope

View File

@ -1,5 +1,5 @@
<mk-file-type-icon> <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> <style lang="stylus" scoped>
:scope :scope
display inline display inline

View File

@ -3,7 +3,7 @@
<div class="files"></div> <div class="files"></div>
<mk-uploader ref="uploader"/> <mk-uploader ref="uploader"/>
<button class="send" @click="send" disabled={ sending } title="%i18n:common.send%"> <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>
<button class="attach-from-local" type="button" title="%i18n:common.tags.mk-messaging-form.attach-from-local%"> <button class="attach-from-local" type="button" title="%i18n:common.tags.mk-messaging-form.attach-from-local%">
%fa:upload% %fa:upload%

View File

@ -1,11 +1,11 @@
<mk-messaging data-compact={ opts.compact }> <mk-messaging data-compact={ opts.compact }>
<div class="search" if={ !opts.compact }> <div class="search" v-if="!opts.compact">
<div class="form"> <div class="form">
<label for="search-input">%fa:search%</label> <label for="search-input">%fa:search%</label>
<input ref="search" type="search" oninput={ search } onkeydown={ onSearchKeydown } placeholder="%i18n:common.tags.mk-messaging.search-user%"/> <input ref="search" type="search" oninput={ search } onkeydown={ onSearchKeydown } placeholder="%i18n:common.tags.mk-messaging.search-user%"/>
</div> </div>
<div class="result"> <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"> <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=""/> <img class="avatar" src={ user.avatar_url + '?thumbnail&size=32' } alt=""/>
<span class="name">{ user.name }</span> <span class="name">{ user.name }</span>
@ -14,7 +14,7 @@
</ol> </ol>
</div> </div>
</div> </div>
<div class="history" if={ history.length > 0 }> <div class="history" v-if="history.length > 0">
<virtual each={ history }> <virtual each={ history }>
<a class="user" data-is-me={ is_me } data-is-read={ is_read } @click="_click"> <a class="user" data-is-me={ is_me } data-is-read={ is_read } @click="_click">
<div> <div>
@ -25,14 +25,14 @@
<mk-time time={ created_at }/> <mk-time time={ created_at }/>
</header> </header>
<div class="body"> <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>
</div> </div>
</a> </a>
</virtual> </virtual>
</div> </div>
<p class="no-history" if={ !fetching && history.length == 0 }>%i18n:common.tags.mk-messaging.no-history%</p> <p class="no-history" v-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="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -4,18 +4,18 @@
</a> </a>
<div class="content-container"> <div class="content-container">
<div class="balloon"> <div class="balloon">
<p class="read" if={ message.is_me && message.is_read }>%i18n:common.tags.mk-messaging-message.is-read%</p> <p class="read" v-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> <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" if={ !message.is_deleted }> <div class="content" v-if="!message.is_deleted">
<div ref="text"></div> <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>
<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> <p class="is-deleted">%i18n:common.tags.mk-messaging-message.deleted%</p>
</div> </div>
</div> </div>
<footer> <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> </footer>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,14 +1,14 @@
<mk-messaging-room> <mk-messaging-room>
<div class="stream"> <div class="stream">
<p class="init" if={ init }>%fa:spinner .spin%%i18n:common.loading%</p> <p class="init" v-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="empty" v-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> <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 }" if={ moreMessagesIsInStock } @click="fetchMoreMessages" disabled={ fetchingMoreMessages }> <button class="more { fetching: fetchingMoreMessages }" v-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%' } <virtual v-if="fetchingMoreMessages">%fa:spinner .pulse .fw%</virtual>{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:common.tags.mk-messaging-room.more%' }
</button> </button>
<virtual each={ message, i in messages }> <virtual each={ message, i in messages }>
<mk-messaging-message message={ message }/> <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> </virtual>
</div> </div>
<footer> <footer>

View File

@ -1,5 +1,5 @@
<mk-poll-editor> <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% %fa:exclamation-triangle%%i18n:common.tags.mk-poll-editor.no-only-one-choice%
</p> </p>
<ul ref="choices"> <ul ref="choices">
@ -10,7 +10,7 @@
</button> </button>
</li> </li>
</ul> </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%"> <button class="destroy" @click="destroy" title="%i18n:common.tags.mk-poll-editor.destroy%">
%fa:times% %fa:times%
</button> </button>

View File

@ -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) : '' }> <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> <div class="backdrop" style={ 'width:' + (parent.result ? (votes / parent.total * 100) : 0) + '%' }></div>
<span> <span>
<virtual if={ is_voted }>%fa:check%</virtual> <virtual v-if="is_voted">%fa:check%</virtual>
{ text } { 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> </span>
</li> </li>
</ul> </ul>
<p if={ total > 0 }> <p v-if="total > 0">
<span>{ '%i18n:common.tags.mk-poll.total-users%'.replace('{}', total) }</span> <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> <a v-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> <span v-if="isVoted">%i18n:common.tags.mk-poll.voted%</span>
</p> </p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -1,8 +1,8 @@
<mk-post-menu> <mk-post-menu>
<div class="backdrop" ref="backdrop" @click="close"></div> <div class="backdrop" ref="backdrop" @click="close"></div>
<div class="popover { compact: opts.compact }" ref="popover"> <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> <button v-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 }> <div v-if="I.is_pro && !post.is_category_verified">
<select ref="categorySelect"> <select ref="categorySelect">
<option value="">%i18n:common.tags.mk-post-menu.select%</option> <option value="">%i18n:common.tags.mk-post-menu.select%</option>
<option value="music">%i18n:common.post_categories.music%</option> <option value="music">%i18n:common.post_categories.music%</option>

View File

@ -1,13 +1,13 @@
<mk-reaction-icon> <mk-reaction-icon>
<virtual if={ opts.reaction == 'like' }><img src="/assets/reactions/like.png" alt="%i18n:common.reactions.like%"></virtual> <virtual v-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 v-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 v-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 v-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 v-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 v-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 v-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 v-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 == 'pudding'"><img src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%"></virtual>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -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> <mk-reactions-viewer>
<virtual if={ reactions }> <virtual v-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> </virtual>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -1,5 +1,5 @@
<mk-signin-history> <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 }/> <mk-signin-record each={ rec in history } rec={ rec }/>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@ -43,8 +43,8 @@
<mk-signin-record> <mk-signin-record>
<header @click="toggle"> <header @click="toggle">
<virtual if={ rec.success }>%fa:check%</virtual> <virtual v-if="rec.success">%fa:check%</virtual>
<virtual if={ !rec.success }>%fa:times%</virtual> <virtual v-if="!rec.success">%fa:times%</virtual>
<span class="ip">{ rec.ip }</span> <span class="ip">{ rec.ip }</span>
<mk-time time={ rec.created_at }/> <mk-time time={ rec.created_at }/>
</header> </header>

View File

@ -6,7 +6,7 @@
<label class="password"> <label class="password">
<input ref="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required="required"/>%fa:lock% <input ref="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required="required"/>%fa:lock%
</label> </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% <input ref="token" type="number" placeholder="%i18n:common.tags.mk-signin.token%" required="required"/>%fa:lock%
</label> </label>
<button type="submit" disabled={ signing }>{ signing ? '%i18n:common.tags.mk-signin.signing-in%' : '%i18n:common.tags.mk-signin.signin%' }</button> <button type="submit" disabled={ signing }>{ signing ? '%i18n:common.tags.mk-signin.signing-in%' : '%i18n:common.tags.mk-signin.signin%' }</button>

View File

@ -3,34 +3,34 @@
<label class="username"> <label class="username">
<p class="caption">%fa:at%%i18n:common.tags.mk-signup.username%</p> <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 }/> <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="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" if={ usernameState == 'wait' } style="color:#999">%fa:spinner .pulse .fw%%i18n:common.tags.mk-signup.checking%</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" if={ usernameState == 'ok' } style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.available%</p> <p class="info" v-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" v-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" v-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" v-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" v-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="info" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.too-long%</p>
</label> </label>
<label class="password"> <label class="password">
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%</p> <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 }/> <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 class="value" ref="passwordMetar"></div>
</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" v-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" v-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 == 'high'" style="color:#3CB7B5">%fa:check .fw%%i18n:common.tags.mk-signup.strong-password%</p>
</label> </label>
<label class="retype-password"> <label class="retype-password">
<p class="caption">%fa:lock%%i18n:common.tags.mk-signup.password%(%i18n:common.tags.mk-signup.retype%)</p> <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 }/> <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" v-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 == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:common.tags.mk-signup.password-not-matched%</p>
</label> </label>
<label class="recaptcha"> <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> <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 if={ recaptcha } class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" data-sitekey={ recaptcha.site_key }></div> <div v-if="recaptcha" class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" data-sitekey={ recaptcha.site_key }></div>
</label> </label>
<label class="agree-tou"> <label class="agree-tou">
<input name="agree-tou" type="checkbox" autocomplete="off" required="required"/> <input name="agree-tou" type="checkbox" autocomplete="off" required="required"/>

View File

@ -1,6 +1,6 @@
<mk-special-message> <mk-special-message>
<p if={ m == 1 && d == 1 }>%i18n:common.tags.mk-special-message.new-year%</p> <p v-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 == 12 && d == 25">%i18n:common.tags.mk-special-message.christmas%</p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,12 +1,12 @@
<mk-twitter-setting> <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>%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> <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> <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> <span v-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> <a href={ _API_URL_ + '/disconnect/twitter' } target="_blank" v-if="I.twitter" @click="disconnect">%i18n:common.tags.mk-twitter-setting.disconnect%</a>
</p> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,12 +1,12 @@
<mk-uploader> <mk-uploader>
<ol if={ uploads.length > 0 }> <ol v-if="uploads.length > 0">
<li each={ uploads }> <li each={ uploads }>
<div class="img" style="background-image: url({ img })"></div> <div class="img" style="background-image: url({ img })"></div>
<p class="name">%fa:spinner .pulse%{ name }</p> <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> <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 if={ progress != undefined && progress.value != progress.max } value={ progress.value } max={ progress.max }></progress> <progress v-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 initing" v-if="progress == undefined"></div>
<div class="progress waiting" if={ progress != undefined && progress.value == progress.max }></div> <div class="progress waiting" v-if="progress != undefined && progress.value == progress.max"></div>
</li> </li>
</ol> </ol>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,5 +1,5 @@
<mk-autocomplete-suggestion> <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"> <li each={ users } @click="parent.onClick" onkeydown={ parent.onKeydown } tabindex="-1">
<img class="avatar" src={ avatar_url + '?thumbnail&size=32' } alt=""/> <img class="avatar" src={ avatar_url + '?thumbnail&size=32' } alt=""/>
<span class="name">{ name }</span> <span class="name">{ name }</span>

View File

@ -1,10 +1,10 @@
<mk-big-follow-button> <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 ? 'フォロー解除' : 'フォローする' }> <button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
<span if={ !wait && user.is_following }>%fa:minus%フォロー解除</span> <span v-if="!wait && user.is_following">%fa:minus%フォロー解除</span>
<span if={ !wait && !user.is_following }>%fa:plus%フォロー</span> <span v-if="!wait && !user.is_following">%fa:plus%フォロー</span>
<virtual if={ wait }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="wait">%fa:spinner .pulse .fw%</virtual>
</button> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,6 +1,6 @@
<mk-detailed-post-window> <mk-detailed-post-window>
<div class="bg" ref="bg" @click="bgClick"></div> <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 }/> <mk-post-detail ref="detail" post={ post }/>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,7 +1,7 @@
<mk-drive-browser-window> <mk-drive-browser-window>
<mk-window ref="window" is-modal={ false } width={ '800px' } height={ '500px' } popout={ popout }> <mk-window ref="window" is-modal={ false } width={ '800px' } height={ '500px' } popout={ popout }>
<yield to="header"> <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% %fa:cloud%%i18n:desktop.tags.mk-drive-browser-window.drive%
</yield> </yield>
<yield to="content"> <yield to="content">

View File

@ -6,44 +6,44 @@
<span class="separator">%fa:angle-right%</span> <span class="separator">%fa:angle-right%</span>
<mk-drive-browser-nav-folder folder={ folder }/> <mk-drive-browser-nav-folder folder={ folder }/>
</virtual> </virtual>
<span class="separator" if={ folder != null }>%fa:angle-right%</span> <span class="separator" v-if="folder != null">%fa:angle-right%</span>
<span class="folder current" if={ folder != null }>{ folder.name }</span> <span class="folder current" v-if="folder != null">{ folder.name }</span>
</div> </div>
<input class="search" type="search" placeholder="&#xf002; %i18n:desktop.tags.mk-drive-browser.search%"/> <input class="search" type="search" placeholder="&#xf002; %i18n:desktop.tags.mk-drive-browser.search%"/>
</nav> </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="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="selection" ref="selection"></div>
<div class="contents" ref="contents"> <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 }> <virtual each={ folder in folders }>
<mk-drive-browser-folder class="folder" folder={ folder }/> <mk-drive-browser-folder class="folder" folder={ folder }/>
</virtual> </virtual>
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid --> <!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
<div class="padding" each={ Array(10).fill(16) }></div> <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>
<div class="files" ref="filesContainer" if={ files.length > 0 }> <div class="files" ref="filesContainer" v-if="files.length > 0">
<virtual each={ file in files }> <virtual each={ file in files }>
<mk-drive-browser-file class="file" file={ file }/> <mk-drive-browser-file class="file" file={ file }/>
</virtual> </virtual>
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid --> <!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
<div class="padding" each={ Array(10).fill(16) }></div> <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>
<div class="empty" if={ files.length == 0 && folders.length == 0 && !fetching }> <div class="empty" v-if="files.length == 0 && folders.length == 0 && !fetching">
<p if={ draghover }>%i18n:desktop.tags.mk-drive-browser.empty-draghover%</p> <p v-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 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 if={ !draghover && folder != null }>%i18n:desktop.tags.mk-drive-browser.empty-folder%</p> <p v-if="!draghover && folder != null">%i18n:desktop.tags.mk-drive-browser.empty-folder%</p>
</div> </div>
</div> </div>
<div class="fetching" if={ fetching }> <div class="fetching" v-if="fetching">
<div class="spinner"> <div class="spinner">
<div class="dot1"></div> <div class="dot1"></div>
<div class="dot2"></div> <div class="dot2"></div>
</div> </div>
</div> </div>
</div> </div>
<div class="dropzone" if={ draghover }></div> <div class="dropzone" v-if="draghover"></div>
<mk-uploader ref="uploader"/> <mk-uploader ref="uploader"/>
<input ref="fileInput" type="file" accept="*/*" multiple="multiple" tabindex="-1" onchange={ changeFileInput }/> <input ref="fileInput" type="file" accept="*/*" multiple="multiple" tabindex="-1" onchange={ changeFileInput }/>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -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 }> <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> <p>%i18n:desktop.tags.mk-drive-browser-file.avatar%</p>
</div> </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> <p>%i18n:desktop.tags.mk-drive-browser-file.banner%</p>
</div> </div>
<div class="thumbnail" ref="thumbnail" style="background-color:{ file.properties.average_color ? 'rgb(' + file.properties.average_color.join(',') + ')' : 'transparent' }"> <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 }/> <img src={ file.url + '?thumbnail&size=128' } alt="" onload={ onload }/>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -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 }> <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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,5 +1,5 @@
<mk-drive-browser-nav-folder data-draghover={ draghover } @click="onclick" ondragover={ ondragover } ondragenter={ ondragenter } ondragleave={ ondragleave } ondrop={ ondrop }> <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> <style lang="stylus" scoped>
:scope :scope
&[data-draghover] &[data-draghover]

View File

@ -1,10 +1,10 @@
<mk-follow-button> <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 ? 'フォロー解除' : 'フォローする' }> <button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait } title={ user.is_following ? 'フォロー解除' : 'フォローする' }>
<virtual if={ !wait && user.is_following }>%fa:minus%</virtual> <virtual v-if="!wait && user.is_following">%fa:minus%</virtual>
<virtual if={ !wait && !user.is_following }>%fa:plus%</virtual> <virtual v-if="!wait && !user.is_following">%fa:plus%</virtual>
<virtual if={ wait }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="wait">%fa:spinner .pulse .fw%</virtual>
</button> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,6 +1,6 @@
<mk-following-setuper> <mk-following-setuper>
<p class="title">気になるユーザーをフォロー:</p> <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="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> <div class="body"><a class="name" href={ '/' + username } target="_blank" data-user-preview={ id }>{ name }</a>
<p class="username">@{ username }</p> <p class="username">@{ username }</p>
@ -8,8 +8,8 @@
<mk-follow-button user={ this }/> <mk-follow-button user={ this }/>
</div> </div>
</div> </div>
<p class="empty" if={ !fetching && users.length == 0 }>おすすめのユーザーは見つかりませんでした。</p> <p class="empty" v-if="!fetching && users.length == 0">おすすめのユーザーは見つかりませんでした。</p>
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
<a class="refresh" @click="refresh">もっと見る</a> <a class="refresh" @click="refresh">もっと見る</a>
<button class="close" @click="close" title="閉じる">%fa:times%</button> <button class="close" @click="close" title="閉じる">%fa:times%</button>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,5 +1,5 @@
<mk-access-log-home-widget> <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> <p class="title">%fa:server%%i18n:desktop.tags.mk-access-log-home-widget.title%</p>
</virtual> </virtual>
<div ref="log"> <div ref="log">

View File

@ -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> <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> </svg>
</div> </div>
<p class="fetching" if={ fetching }>%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p>
<h1 if={ !fetching }>{ <h1 v-if="!fetching">{
broadcasts.length == 0 ? '%i18n:desktop.tags.mk-broadcast-home-widget.no-broadcasts%' : broadcasts[i].title broadcasts.length == 0 ? '%i18n:desktop.tags.mk-broadcast-home-widget.no-broadcasts%' : broadcasts[i].title
}</h1> }</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> <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 if={ broadcasts.length > 1 } @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% &gt;&gt;</a> <a v-if="broadcasts.length > 1" @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% &gt;&gt;</a>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,11 +1,11 @@
<mk-channel-home-widget> <mk-channel-home-widget>
<virtual if={ !data.compact }> <virtual v-if="!data.compact">
<p class="title">%fa:tv%{ <p class="title">%fa:tv%{
channel ? channel.title : '%i18n:desktop.tags.mk-channel-home-widget.title%' channel ? channel.title : '%i18n:desktop.tags.mk-channel-home-widget.title%'
}</p> }</p>
<button @click="settings" title="%i18n:desktop.tags.mk-channel-home-widget.settings%">%fa:cog%</button> <button @click="settings" title="%i18n:desktop.tags.mk-channel-home-widget.settings%">%fa:cog%</button>
</virtual> </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 }/> <mk-channel ref="channel" show={ this.data.channel }/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
@ -104,9 +104,9 @@
</mk-channel-home-widget> </mk-channel-home-widget>
<mk-channel> <mk-channel>
<p if={ fetching }>読み込み中<mk-ellipsis/></p> <p v-if="fetching">読み込み中<mk-ellipsis/></p>
<div if={ !fetching } ref="posts"> <div v-if="!fetching" ref="posts">
<p if={ posts.length == 0 }>まだ投稿がありません</p> <p v-if="posts.length == 0">まだ投稿がありません</p>
<mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/> <mk-channel-post each={ post in posts.slice().reverse() } post={ post } form={ parent.refs.form }/>
</div> </div>
<mk-channel-form ref="form"/> <mk-channel-form ref="form"/>
@ -197,9 +197,9 @@
<span>ID:<i>{ post.user.username }</i></span> <span>ID:<i>{ post.user.username }</i></span>
</header> </header>
<div> <div>
<a if={ post.reply }>&gt;&gt;{ post.reply.index }</a> <a v-if="post.reply">&gt;&gt;{ post.reply.index }</a>
{ post.text } { post.text }
<div class="media" if={ post.media }> <div class="media" v-if="post.media">
<virtual each={ file in post.media }> <virtual each={ file in post.media }>
<a href={ file.url } target="_blank"> <a href={ file.url } target="_blank">
<img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/> <img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/>

View File

@ -1,13 +1,13 @@
<mk-mentions-home-widget> <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> <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/> <mk-ellipsis-icon/>
</div> </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"> <mk-timeline ref="timeline">
<yield to="footer"> <yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual> <virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
</yield/> </yield/>
</mk-timeline> </mk-timeline>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,5 +1,5 @@
<mk-messaging-home-widget> <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> <p class="title">%fa:comments%%i18n:desktop.tags.mk-messaging-home-widget.title%</p>
</virtual> </virtual>
<mk-messaging ref="index" compact={ true }/> <mk-messaging ref="index" compact={ true }/>

View File

@ -1,5 +1,5 @@
<mk-notifications-home-widget> <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> <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> <button @click="settings" title="%i18n:desktop.tags.mk-notifications-home-widget.settings%">%fa:cog%</button>
</virtual> </virtual>

View File

@ -1,14 +1,14 @@
<mk-photo-stream-home-widget data-melt={ data.design == 2 }> <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> <p class="title">%fa:camera%%i18n:desktop.tags.mk-photo-stream-home-widget.title%</p>
</virtual> </virtual>
<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>
<div class="stream" if={ !initializing && images.length > 0 }> <div class="stream" v-if="!initializing && images.length > 0">
<virtual each={ image in images }> <virtual each={ image in images }>
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div> <div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
</virtual> </virtual>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,7 +1,7 @@
<mk-post-form-home-widget> <mk-post-form-home-widget>
<mk-post-form if={ place == 'main' }/> <mk-post-form v-if="place == 'main'"/>
<virtual if={ place != 'main' }> <virtual v-if="place != 'main'">
<virtual if={ data.design == 0 }> <virtual v-if="data.design == 0">
<p class="title">%fa:pencil-alt%%i18n:desktop.tags.mk-post-form-home-widget.title%</p> <p class="title">%fa:pencil-alt%%i18n:desktop.tags.mk-post-form-home-widget.title%</p>
</virtual> </virtual>
<textarea disabled={ posting } ref="text" onkeydown={ onkeydown } placeholder="%i18n:desktop.tags.mk-post-form-home-widget.placeholder%"></textarea> <textarea disabled={ posting } ref="text" onkeydown={ onkeydown } placeholder="%i18n:desktop.tags.mk-post-form-home-widget.placeholder%"></textarea>

View File

@ -1,15 +1,15 @@
<mk-recommended-polls-home-widget> <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> <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> <button @click="fetch" title="%i18n:desktop.tags.mk-recommended-polls-home-widget.refresh%">%fa:sync%</button>
</virtual> </virtual>
<div class="poll" if={ !loading && poll != null }> <div class="poll" v-if="!loading && poll != null">
<p 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 }">{ poll.text }</a></p>
<p if={ !poll.text }><a href="/{ poll.user.username }/{ poll.id }">%fa:link%</a></p> <p v-if="!poll.text"><a href="/{ poll.user.username }/{ poll.id }">%fa:link%</a></p>
<mk-poll post={ poll }/> <mk-poll post={ poll }/>
</div> </div>
<p class="empty" if={ !loading && poll == null }>%i18n:desktop.tags.mk-recommended-polls-home-widget.nothing%</p> <p class="empty" v-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="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,12 +1,12 @@
<mk-rss-reader-home-widget> <mk-rss-reader-home-widget>
<virtual if={ !data.compact }> <virtual v-if="!data.compact">
<p class="title">%fa:rss-square%RSS</p> <p class="title">%fa:rss-square%RSS</p>
<button @click="settings" title="設定">%fa:cog%</button> <button @click="settings" title="設定">%fa:cog%</button>
</virtual> </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> <virtual each={ item in items }><a href={ item.link } target="_blank">{ item.title }</a></virtual>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,15 +1,15 @@
<mk-server-home-widget data-melt={ data.design == 2 }> <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> <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> <button @click="toggle" title="%i18n:desktop.tags.mk-server-home-widget.toggle%">%fa:sort%</button>
</virtual> </virtual>
<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>
<mk-server-home-widget-cpu-and-memory-usage if={ !initializing } show={ data.view == 0 } connection={ connection }/> <mk-server-home-widget-cpu-and-memory-usage v-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-cpu v-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-memory v-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-disk v-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-uptimes v-if="!initializing" show={ data.view == 4 } connection={ connection }/>
<mk-server-home-widget-info if={ !initializing } show={ data.view == 5 } connection={ connection } meta={ meta }/> <mk-server-home-widget-info v-if="!initializing" show={ data.view == 5 } connection={ connection } meta={ meta }/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,7 +1,7 @@
<mk-slideshow-home-widget> <mk-slideshow-home-widget>
<div @click="choose"> <div @click="choose">
<p if={ data.folder === undefined }>クリックしてフォルダを指定してください</p> <p v-if="data.folder === undefined">クリックしてフォルダを指定してください</p>
<p if={ data.folder !== undefined && images.length == 0 && !fetching }>このフォルダには画像がありません</p> <p v-if="data.folder !== undefined && images.length == 0 && !fetching">このフォルダには画像がありません</p>
<div ref="slideA" class="slide a"></div> <div ref="slideA" class="slide a"></div>
<div ref="slideB" class="slide b"></div> <div ref="slideB" class="slide b"></div>
</div> </div>

View File

@ -1,13 +1,13 @@
<mk-timeline-home-widget> <mk-timeline-home-widget>
<mk-following-setuper if={ noFollowing }/> <mk-following-setuper v-if="noFollowing"/>
<div class="loading" if={ isLoading }> <div class="loading" v-if="isLoading">
<mk-ellipsis-icon/> <mk-ellipsis-icon/>
</div> </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 }> <mk-timeline ref="timeline" hide={ isLoading }>
<yield to="footer"> <yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual> <virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
</yield/> </yield/>
</mk-timeline> </mk-timeline>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,14 +1,14 @@
<mk-trends-home-widget> <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> <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> <button @click="fetch" title="%i18n:desktop.tags.mk-trends-home-widget.refresh%">%fa:sync%</button>
</virtual> </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="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> <p class="author"><a href="/{ post.user.username }">@{ post.user.username }</a></p>
</div> </div>
<p class="empty" if={ !loading && post == null }>%i18n:desktop.tags.mk-trends-home-widget.nothing%</p> <p class="empty" v-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="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,9 +1,9 @@
<mk-user-recommendation-home-widget> <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> <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> <button @click="refresh" title="%i18n:desktop.tags.mk-user-recommendation-home-widget.refresh%">%fa:sync%</button>
</virtual> </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 }> <a class="avatar-anchor" href={ '/' + _user.username }>
<img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/> <img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/>
</a> </a>
@ -13,8 +13,8 @@
</div> </div>
<mk-follow-button user={ _user }/> <mk-follow-button user={ _user }/>
</div> </div>
<p class="empty" if={ !loading && users.length == 0 }>%i18n:desktop.tags.mk-user-recommendation-home-widget.no-one%</p> <p class="empty" v-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="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,5 +1,5 @@
<mk-home data-customize={ opts.customize }> <mk-home data-customize={ opts.customize }>
<div class="customize" if={ opts.customize }> <div class="customize" v-if="opts.customize">
<a href="/">%fa:check%完了</a> <a href="/">%fa:check%完了</a>
<div> <div>
<div class="adder"> <div class="adder">
@ -40,9 +40,9 @@
<div ref="left" data-place="left"></div> <div ref="left" data-place="left"></div>
</div> </div>
<main ref="main"> <main ref="main">
<div class="maintop" ref="maintop" data-place="main" if={ opts.customize }></div> <div class="maintop" ref="maintop" data-place="main" v-if="opts.customize"></div>
<mk-timeline-home-widget ref="tl" if={ mode == 'timeline' }/> <mk-timeline-home-widget ref="tl" v-if="mode == 'timeline'"/>
<mk-mentions-home-widget ref="tl" if={ mode == 'mentions' }/> <mk-mentions-home-widget ref="tl" v-if="mode == 'mentions'"/>
</main> </main>
<div class="right"> <div class="right">
<div ref="right" data-place="right"></div> <div ref="right" data-place="right"></div>

View File

@ -8,7 +8,7 @@
<span class="username">@{ user.username }</span> <span class="username">@{ user.username }</span>
</header> </header>
<div class="body"> <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 class="description">{ user.description }</div>
</div> </div>
</div> </div>

View File

@ -1,9 +1,9 @@
<mk-notifications> <mk-notifications>
<div class="notifications" if={ notifications.length != 0 }> <div class="notifications" v-if="notifications.length != 0">
<virtual each={ notification, i in notifications }> <virtual each={ notification, i in notifications }>
<div class="notification { notification.type }"> <div class="notification { notification.type }">
<mk-time time={ notification.created_at }/> <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 }> <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"/> <img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -14,7 +14,7 @@
</a> </a>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -25,7 +25,7 @@
</a> </a>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -34,7 +34,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a> <a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </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> <p>%fa:user-plus%<a href={ '/' + notification.user.username } data-user-preview={ notification.user.id }>{ notification.user.name }</a></p>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -51,7 +51,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a> <a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.post.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -60,7 +60,7 @@
<a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a> <a class="post-preview" href={ '/' + notification.post.user.username + '/' + notification.post.id }>{ getPostSummary(notification.post) }</a>
</div> </div>
</virtual> </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 }> <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"/> <img class="avatar" src={ notification.user.avatar_url + '?thumbnail&size=48' } alt="avatar"/>
</a> </a>
@ -72,17 +72,17 @@
</div> </div>
</virtual> </virtual>
</div> </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-up%{ notification._datetext }</span>
<span>%fa:angle-down%{ notifications[i + 1]._datetext }</span> <span>%fa:angle-down%{ notifications[i + 1]._datetext }</span>
</p> </p>
</virtual> </virtual>
</div> </div>
<button class="more { fetching: fetchingMoreNotifications }" if={ moreNotifications } @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }> <button class="more { fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" disabled={ fetchingMoreNotifications }>
<virtual if={ fetchingMoreNotifications }>%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' } <virtual v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</virtual>{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:desktop.tags.mk-notifications.more%' }
</button> </button>
<p class="empty" if={ notifications.length == 0 && !loading }>ありません!</p> <p class="empty" v-if="notifications.length == 0 && !loading">ありません!</p>
<p class="loading" if={ loading }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> <p class="loading" v-if="loading">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -3,12 +3,12 @@
<div> <div>
<h1>どこにいても、ここにあります</h1> <h1>どこにいても、ここにあります</h1>
<p>ようこそ! MisskeyはTwitter風ミニブログSNSです――思ったこと、共有したいことをシンプルに書き残せます。タイムラインを見れば、皆の反応や皆がどう思っているのかもすぐにわかります。</p> <p>ようこそ! MisskeyはTwitter風ミニブログSNSです――思ったこと、共有したいことをシンプルに書き残せます。タイムラインを見れば、皆の反応や皆がどう思っているのかもすぐにわかります。</p>
<p if={ stats }>これまでに{ stats.posts_count }投稿されました</p> <p v-if="stats">これまでに{ stats.posts_count }投稿されました</p>
</div> </div>
<div> <div>
<mk-entrance-signin if={ mode == 'signin' }/> <mk-entrance-signin v-if="mode == 'signin'"/>
<mk-entrance-signup if={ mode == 'signup' }/> <mk-entrance-signup v-if="mode == 'signup'"/>
<div class="introduction" if={ mode == 'introduction' }> <div class="introduction" v-if="mode == 'introduction'">
<mk-introduction/> <mk-introduction/>
<button @click="signin">わかった</button> <button @click="signin">わかった</button>
</div> </div>
@ -152,7 +152,7 @@
<mk-entrance-signin> <mk-entrance-signin>
<a class="help" href={ _DOCS_URL_ + '/help' } title="お困りですか?">%fa:question%</a> <a class="help" href={ _DOCS_URL_ + '/help' } title="お困りですか?">%fa:question%</a>
<div class="form"> <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> <p>{ user ? user.name : 'アカウント' }</p>
</h1> </h1>
<mk-signin ref="signin"/> <mk-signin ref="signin"/>

View File

@ -1,5 +1,5 @@
<mk-messaging-room-page> <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> <style lang="stylus" scoped>
:scope :scope

View File

@ -1,9 +1,9 @@
<mk-post-page> <mk-post-page>
<mk-ui ref="ui"> <mk-ui ref="ui">
<main if={ !parent.fetching }> <main v-if="!parent.fetching">
<a if={ parent.post.next } href={ parent.post.next }>%fa:angle-up%%i18n:desktop.tags.mk-post-page.next%</a> <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 }/> <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> </main>
</mk-ui> </mk-ui>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -16,7 +16,7 @@
</header> </header>
<div class="body"> <div class="body">
<div class="text" ref="text"></div> <div class="text" ref="text"></div>
<div class="media" if={ post.media }> <div class="media" v-if="post.media">
<mk-images images={ post.media }/> <mk-images images={ post.media }/>
</div> </div>
</div> </div>

View File

@ -1,18 +1,18 @@
<mk-post-detail title={ title }> <mk-post-detail title={ title }>
<div class="main"> <div class="main">
<button class="read-more" if={ p.reply && p.reply.reply_id && context == null } title="会話をもっと読み込む" @click="loadContext" disabled={ contextFetching }> <button class="read-more" v-if="p.reply && p.reply.reply_id && context == null" title="会話をもっと読み込む" @click="loadContext" disabled={ contextFetching }>
<virtual if={ !contextFetching }>%fa:ellipsis-v%</virtual> <virtual v-if="!contextFetching">%fa:ellipsis-v%</virtual>
<virtual if={ contextFetching }>%fa:spinner .pulse%</virtual> <virtual v-if="contextFetching">%fa:spinner .pulse%</virtual>
</button> </button>
<div class="context"> <div class="context">
<virtual each={ post in context }> <virtual each={ post in context }>
<mk-post-detail-sub post={ post }/> <mk-post-detail-sub post={ post }/>
</virtual> </virtual>
</div> </div>
<div class="reply-to" if={ p.reply }> <div class="reply-to" v-if="p.reply">
<mk-post-detail-sub post={ p.reply }/> <mk-post-detail-sub post={ p.reply }/>
</div> </div>
<div class="repost" if={ isRepost }> <div class="repost" v-if="isRepost">
<p> <p>
<a class="avatar-anchor" href={ '/' + post.user.username } data-user-preview={ post.user_id }> <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"/> <img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
@ -36,28 +36,28 @@
</header> </header>
<div class="body"> <div class="body">
<div class="text" ref="text"></div> <div class="text" ref="text"></div>
<div class="media" if={ p.media }> <div class="media" v-if="p.media">
<mk-images images={ p.media }/> <mk-images images={ p.media }/>
</div> </div>
<mk-poll if={ p.poll } post={ p }/> <mk-poll v-if="p.poll" post={ p }/>
</div> </div>
<footer> <footer>
<mk-reactions-viewer post={ p }/> <mk-reactions-viewer post={ p }/>
<button @click="reply" title="返信"> <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>
<button @click="repost" title="Repost"> <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>
<button class={ reacted: p.my_reaction != null } @click="react" ref="reactButton" title="リアクション"> <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>
<button @click="menu" ref="menuButton"> <button @click="menu" ref="menuButton">
%fa:ellipsis-h% %fa:ellipsis-h%
</button> </button>
</footer> </footer>
</article> </article>
<div class="replies" if={ !compact }> <div class="replies" v-if="!compact">
<virtual each={ post in replies }> <virtual each={ post in replies }>
<mk-post-detail-sub post={ post }/> <mk-post-detail-sub post={ post }/>
</virtual> </virtual>

View File

@ -1,13 +1,13 @@
<mk-post-form-window> <mk-post-form-window>
<mk-window ref="window" is-modal={ true }> <mk-window ref="window" is-modal={ true }>
<yield to="header"> <yield to="header">
<span 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.post%</span>
<span if={ parent.opts.reply }>%i18n:desktop.tags.mk-post-form-window.reply%</span> <span v-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="files" v-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 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>
<yield to="content"> <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 }/> <mk-post-preview post={ parent.opts.reply }/>
</div> </div>
<div class="body"> <div class="body">

View File

@ -10,7 +10,7 @@
</ul> </ul>
<p class="remain">{ 4 - files.length }/4</p> <p class="remain">{ 4 - files.length }/4</p>
</div> </div>
<mk-poll-editor if={ poll } ref="poll" ondestroy={ onPollDestroyed }/> <mk-poll-editor v-if="poll" ref="poll" ondestroy={ onPollDestroyed }/>
</div> </div>
<mk-uploader ref="uploader"/> <mk-uploader ref="uploader"/>
<button ref="upload" title="%i18n:desktop.tags.mk-post-form.attach-media-from-local%" @click="selectFile">%fa:upload%</button> <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> <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> <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"> <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> </button>
<input ref="file" type="file" accept="image/*" multiple="multiple" tabindex="-1" onchange={ changeFile }/> <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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -3,10 +3,10 @@
<yield to="header">{ parent.title }<mk-ellipsis/></yield> <yield to="header">{ parent.title }<mk-ellipsis/></yield>
<yield to="content"> <yield to="content">
<div class="body"> <div class="body">
<p class="init" if={ isNaN(parent.value) }>待機中<mk-ellipsis/></p> <p class="init" v-if="isNaN(parent.value)">待機中<mk-ellipsis/></p>
<p class="percentage" if={ !isNaN(parent.value) }>{ Math.floor((parent.value / parent.max) * 100) }</p> <p class="percentage" v-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> <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" if={ parent.value >= parent.max }></div> <div class="progress waiting" v-if="parent.value >= parent.max"></div>
</div> </div>
</yield> </yield>
</mk-window> </mk-window>

View File

@ -1,13 +1,13 @@
<mk-repost-form> <mk-repost-form>
<mk-post-preview post={ opts.post }/> <mk-post-preview post={ opts.post }/>
<virtual if={ !quote }> <virtual v-if="!quote">
<footer> <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="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> <button class="ok" @click="ok" disabled={ wait }>{ wait ? '%i18n:desktop.tags.mk-repost-form.reposting%' : '%i18n:desktop.tags.mk-repost-form.repost%' }</button>
</footer> </footer>
</virtual> </virtual>
<virtual if={ quote }> <virtual v-if="quote">
<mk-post-form ref="form" repost={ opts.post }/> <mk-post-form ref="form" repost={ opts.post }/>
</virtual> </virtual>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,12 +1,12 @@
<mk-search-posts> <mk-search-posts>
<div class="loading" if={ isLoading }> <div class="loading" v-if="isLoading">
<mk-ellipsis-icon/> <mk-ellipsis-icon/>
</div> </div>
<p class="empty" if={ isEmpty }>%fa:search%「{ query }」に関する投稿は見つかりませんでした。</p> <p class="empty" v-if="isEmpty">%fa:search%「{ query }」に関する投稿は見つかりませんでした。</p>
<mk-timeline ref="timeline"> <mk-timeline ref="timeline">
<yield to="footer"> <yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual> <virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
</yield/> </yield/>
</mk-timeline> </mk-timeline>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -2,7 +2,7 @@
<mk-window ref="window" is-modal={ true } width={ '800px' } height={ '500px' }> <mk-window ref="window" is-modal={ true } width={ '800px' } height={ '500px' }>
<yield to="header"> <yield to="header">
<mk-raw content={ parent.title }/> <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>
<yield to="content"> <yield to="content">
<mk-drive-browser ref="browser" multiple={ parent.multiple }/> <mk-drive-browser ref="browser" multiple={ parent.multiple }/>

View File

@ -265,12 +265,12 @@
<mk-2fa-setting> <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> <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> <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> <p v-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 }> <virtual v-if="I.two_factor_enabled">
<p>%i18n:desktop.tags.mk-2fa-setting.already-registered%</p> <p>%i18n:desktop.tags.mk-2fa-setting.already-registered%</p>
<button @click="unregister" class="ui">%i18n:desktop.tags.mk-2fa-setting.unregister%</button> <button @click="unregister" class="ui">%i18n:desktop.tags.mk-2fa-setting.unregister%</button>
</virtual> </virtual>
<div if={ data }> <div v-if="data">
<ol> <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.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> <li>%i18n:desktop.tags.mk-2fa-setting.scan%<br><img src={ data.qr }></li>
@ -394,10 +394,10 @@
</mk-drive-setting> </mk-drive-setting>
<mk-mute-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> <p>%fa:info-circle%%i18n:desktop.tags.mk-mute-setting.no-users%</p>
</div> </div>
<div class="users" if={ users.length != 0 }> <div class="users" v-if="users.length != 0">
<div each={ user in users }> <div each={ user in users }>
<p><b>{ user.name }</b> @{ user.username }</p> <p><b>{ user.name }</b> @{ user.username }</p>
</div> </div>

View File

@ -1,16 +1,16 @@
<mk-sub-post-content> <mk-sub-post-content>
<div class="body"> <div class="body">
<a class="reply" if={ post.reply_id }> <a class="reply" v-if="post.reply_id">
%fa:reply% %fa:reply%
</a> </a>
<span ref="text"></span> <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> </div>
<details if={ post.media }> <details v-if="post.media">
<summary>({ post.media.length }つのメディア)</summary> <summary>({ post.media.length }つのメディア)</summary>
<mk-images images={ post.media }/> <mk-images images={ post.media }/>
</details> </details>
<details if={ post.poll }> <details v-if="post.poll">
<summary>投票</summary> <summary>投票</summary>
<mk-poll post={ post }/> <mk-poll post={ post }/>
</details> </details>

View File

@ -1,7 +1,7 @@
<mk-timeline> <mk-timeline>
<virtual each={ post, i in posts }> <virtual each={ post, i in posts }>
<mk-timeline-post post={ post }/> <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> </virtual>
<footer data-yield="footer"> <footer data-yield="footer">
<yield from="footer"/> <yield from="footer"/>
@ -82,10 +82,10 @@
</mk-timeline> </mk-timeline>
<mk-timeline-post tabindex="-1" title={ title } onkeydown={ onKeyDown } dblclick={ onDblClick }> <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 }/> <mk-timeline-post-sub post={ p.reply }/>
</div> </div>
<div class="repost" if={ isRepost }> <div class="repost" v-if="isRepost">
<p> <p>
<a class="avatar-anchor" href={ '/' + post.user.username } data-user-preview={ post.user_id }> <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"/> <img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/>
@ -101,10 +101,10 @@
<div class="main"> <div class="main">
<header> <header>
<a class="name" href={ '/' + p.user.username } data-user-preview={ p.user.id }>{ p.user.name }</a> <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> <span class="username">@{ p.user.username }</span>
<div class="info"> <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 }> <a class="created-at" href={ url }>
<mk-time time={ p.created_at }/> <mk-time time={ p.created_at }/>
</a> </a>
@ -112,43 +112,43 @@
</header> </header>
<div class="body"> <div class="body">
<div class="text" ref="text"> <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> <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" if={ p.reply }> <a class="reply" v-if="p.reply">
%fa:reply% %fa:reply%
</a> </a>
<p class="dummy"></p> <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>
<div class="media" if={ p.media }> <div class="media" v-if="p.media">
<mk-images images={ p.media }/> <mk-images images={ p.media }/>
</div> </div>
<mk-poll if={ p.poll } post={ p } ref="pollViewer"/> <mk-poll v-if="p.poll" post={ p } ref="pollViewer"/>
<div class="repost" if={ p.repost }>%fa:quote-right -flip-h% <div class="repost" v-if="p.repost">%fa:quote-right -flip-h%
<mk-post-preview class="repost" post={ p.repost }/> <mk-post-preview class="repost" post={ p.repost }/>
</div> </div>
</div> </div>
<footer> <footer>
<mk-reactions-viewer post={ p } ref="reactionsViewer"/> <mk-reactions-viewer post={ p } ref="reactionsViewer"/>
<button @click="reply" title="%i18n:desktop.tags.mk-timeline-post.reply%"> <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>
<button @click="repost" title="%i18n:desktop.tags.mk-timeline-post.repost%"> <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>
<button class={ reacted: p.my_reaction != null } @click="react" ref="reactButton" title="%i18n:desktop.tags.mk-timeline-post.add-reaction%"> <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>
<button @click="menu" ref="menuButton"> <button @click="menu" ref="menuButton">
%fa:ellipsis-h% %fa:ellipsis-h%
</button> </button>
<button @click="toggleDetail" title="%i18n:desktop.tags.mk-timeline-post.detail"> <button @click="toggleDetail" title="%i18n:desktop.tags.mk-timeline-post.detail">
<virtual if={ !isDetailOpened }>%fa:caret-down%</virtual> <virtual v-if="!isDetailOpened">%fa:caret-down%</virtual>
<virtual if={ isDetailOpened }>%fa:caret-up%</virtual> <virtual v-if="isDetailOpened">%fa:caret-up%</virtual>
</button> </button>
</footer> </footer>
</div> </div>
</article> </article>
<div class="detail" if={ isDetailOpened }> <div class="detail" v-if="isDetailOpened">
<mk-post-status-graph width="462" height="130" post={ p }/> <mk-post-status-graph width="462" height="130" post={ p }/>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,11 +1,11 @@
<mk-ui> <mk-ui>
<mk-ui-header page={ opts.page }/> <mk-ui-header page={ opts.page }/>
<mk-set-avatar-suggestion if={ SIGNIN && I.avatar_id == null }/> <mk-set-avatar-suggestion v-if="SIGNIN && I.avatar_id == null"/>
<mk-set-banner-suggestion if={ SIGNIN && I.banner_id == null }/> <mk-set-banner-suggestion v-if="SIGNIN && I.banner_id == null"/>
<div class="content"> <div class="content">
<yield /> <yield />
</div> </div>
<mk-stream-indicator if={ SIGNIN }/> <mk-stream-indicator v-if="SIGNIN"/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block
@ -37,7 +37,7 @@
</mk-ui> </mk-ui>
<mk-ui-header> <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/> <mk-special-message/>
<div class="main"> <div class="main">
<div class="backdrop"></div> <div class="backdrop"></div>
@ -48,9 +48,9 @@
</div> </div>
<div class="right"> <div class="right">
<mk-ui-header-search/> <mk-ui-header-search/>
<mk-ui-header-account if={ SIGNIN }/> <mk-ui-header-account v-if="SIGNIN"/>
<mk-ui-header-notifications if={ SIGNIN }/> <mk-ui-header-notifications v-if="SIGNIN"/>
<mk-ui-header-post-button if={ SIGNIN }/> <mk-ui-header-post-button v-if="SIGNIN"/>
<mk-ui-header-clock/> <mk-ui-header-clock/>
</div> </div>
</div> </div>
@ -230,9 +230,9 @@
<mk-ui-header-notifications> <mk-ui-header-notifications>
<button data-active={ isOpen } @click="toggle" title="%i18n:desktop.tags.mk-ui-header-notifications.title%"> <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> </button>
<div class="notifications" if={ isOpen }> <div class="notifications" v-if="isOpen">
<mk-notifications/> <mk-notifications/>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@ -392,7 +392,7 @@
<mk-ui-header-nav> <mk-ui-header-nav>
<ul> <ul>
<virtual if={ SIGNIN }> <virtual v-if="SIGNIN">
<li class="home { active: page == 'home' }"> <li class="home { active: page == 'home' }">
<a href={ _URL_ }> <a href={ _URL_ }>
%fa:home% %fa:home%
@ -403,7 +403,7 @@
<a @click="messaging"> <a @click="messaging">
%fa:comments% %fa:comments%
<p>%i18n:desktop.tags.mk-ui-header-nav.messaging%</p> <p>%i18n:desktop.tags.mk-ui-header-nav.messaging%</p>
<virtual if={ hasUnreadMessagingMessages }>%fa:circle%</virtual> <virtual v-if="hasUnreadMessagingMessages">%fa:circle%</virtual>
</a> </a>
</li> </li>
</virtual> </virtual>
@ -630,10 +630,10 @@
<mk-ui-header-account> <mk-ui-header-account>
<button class="header" data-active={ isOpen.toString() } @click="toggle"> <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"/> <img class="avatar" src={ I.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
</button> </button>
<div class="menu" if={ isOpen }> <div class="menu" v-if="isOpen">
<ul> <ul>
<li> <li>
<a href={ '/' + I.username }>%fa:user%%i18n:desktop.tags.mk-ui-header-account.profile%%fa:angle-right%</a> <a href={ '/' + I.username }>%fa:user%%i18n:desktop.tags.mk-ui-header-account.profile%%fa:angle-right%</a>

View File

@ -1,5 +1,5 @@
<mk-user-preview> <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="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"> <div class="title">
<p class="name">{ user.name }</p> <p class="name">{ user.name }</p>
@ -17,7 +17,7 @@
<p>フォロワー</p><a>{ user.followers_count }</a> <p>フォロワー</p><a>{ user.followers_count }</a>
</div> </div>
</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> </virtual>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -2,14 +2,14 @@
<header> <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> <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> </header>
<div class="loading" if={ isLoading }> <div class="loading" v-if="isLoading">
<mk-ellipsis-icon/> <mk-ellipsis-icon/>
</div> </div>
<p class="empty" if={ isEmpty }>%fa:R comments%このユーザーはまだ何も投稿していないようです。</p> <p class="empty" v-if="isEmpty">%fa:R comments%このユーザーはまだ何も投稿していないようです。</p>
<mk-timeline ref="timeline"> <mk-timeline ref="timeline">
<yield to="footer"> <yield to="footer">
<virtual if={ !parent.moreLoading }>%fa:moon%</virtual> <virtual v-if="!parent.moreLoading">%fa:moon%</virtual>
<virtual if={ parent.moreLoading }>%fa:spinner .pulse .fw%</virtual> <virtual v-if="parent.moreLoading">%fa:spinner .pulse .fw%</virtual>
</yield/> </yield/>
</mk-timeline> </mk-timeline>
<style lang="stylus" scoped> <style lang="stylus" scoped>

View File

@ -1,10 +1,10 @@
<mk-user> <mk-user>
<div class="user" if={ !fetching }> <div class="user" v-if="!fetching">
<header> <header>
<mk-user-header user={ user }/> <mk-user-header user={ user }/>
</header> </header>
<mk-user-home if={ page == 'home' } user={ user }/> <mk-user-home v-if="page == 'home'" user={ user }/>
<mk-user-graphs if={ page == 'graphs' } user={ user }/> <mk-user-graphs v-if="page == 'graphs'" user={ user }/>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
@ -48,7 +48,7 @@
<div class="title"> <div class="title">
<p class="name" href={ '/' + user.username }>{ user.name }</p> <p class="name" href={ '/' + user.username }>{ user.name }</p>
<p class="username">@{ user.username }</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> </div>
<footer> <footer>
<a href={ '/' + user.username } data-active={ parent.page == 'home' }>%fa:home%概要</a> <a href={ '/' + user.username } data-active={ parent.page == 'home' }>%fa:home%概要</a>
@ -224,17 +224,17 @@
</mk-user-header> </mk-user-header>
<mk-user-profile> <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 }/> <mk-big-follow-button user={ user }/>
<p class="followed" if={ user.is_followed }>%i18n:desktop.tags.mk-user.follows-you%</p> <p class="followed" v-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 v-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 v-if="!user.is_muted"><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
</div> </div>
<div class="description" if={ user.description }>{ user.description }</div> <div class="description" v-if="user.description">{ user.description }</div>
<div class="birthday" if={ user.profile.birthday }> <div class="birthday" v-if="user.profile.birthday">
<p>%fa:birthday-cake%{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)</p> <p>%fa:birthday-cake%{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.profile.birthday) }歳)</p>
</div> </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> <p>%fa:B twitter%<a href={ 'https://twitter.com/' + user.twitter.screen_name } target="_blank">@{ user.twitter.screen_name }</a></p>
</div> </div>
<div class="status"> <div class="status">
@ -355,13 +355,13 @@
<mk-user-photos> <mk-user-photos>
<p class="title">%fa:camera%%i18n:desktop.tags.mk-user.photos.title%</p> <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> <p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.photos.loading%<mk-ellipsis/></p>
<div class="stream" if={ !initializing && images.length > 0 }> <div class="stream" v-if="!initializing && images.length > 0">
<virtual each={ image in images }> <virtual each={ image in images }>
<div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div> <div class="img" style={ 'background-image: url(' + image.url + '?thumbnail&size=256)' }></div>
</virtual> </virtual>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block
@ -449,8 +449,8 @@
<mk-user-frequently-replied-users> <mk-user-frequently-replied-users>
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.frequently-replied-users.title%</p> <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> <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" if={ !initializing && users.length != 0 } each={ _user in users }> <div class="user" v-if="!initializing && users.length != 0" each={ _user in users }>
<a class="avatar-anchor" href={ '/' + _user.username }> <a class="avatar-anchor" href={ '/' + _user.username }>
<img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/> <img class="avatar" src={ _user.avatar_url + '?thumbnail&size=42' } alt="" data-user-preview={ _user.id }/>
</a> </a>
@ -460,7 +460,7 @@
</div> </div>
<mk-follow-button user={ _user }/> <mk-follow-button user={ _user }/>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block
@ -561,13 +561,13 @@
<mk-user-followers-you-know> <mk-user-followers-you-know>
<p class="title">%fa:users%%i18n:desktop.tags.mk-user.followers-you-know.title%</p> <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> <p class="initializing" v-if="initializing">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
<div if={ !initializing && users.length > 0 }> <div v-if="!initializing && users.length > 0">
<virtual each={ user in users }> <virtual each={ user in users }>
<a href={ '/' + user.username }><img src={ user.avatar_url + '?thumbnail&size=64' } alt={ user.name }/></a> <a href={ '/' + user.username }><img src={ user.avatar_url + '?thumbnail&size=64' } alt={ user.name }/></a>
</virtual> </virtual>
</div> </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> <style lang="stylus" scoped>
:scope :scope
display block display block
@ -638,12 +638,12 @@
<div ref="left"> <div ref="left">
<mk-user-profile user={ user }/> <mk-user-profile user={ user }/>
<mk-user-photos 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> <p>%i18n:desktop.tags.mk-user.last-used-at%: <b><mk-time time={ user.last_used_at }/></b></p>
</div> </div>
</div> </div>
<main> <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 }/> <mk-user-timeline ref="tl" user={ user }/>
</main> </main>
<div> <div>
@ -784,7 +784,7 @@
</mk-user-graphs> </mk-user-graphs>
<mk-user-graphs-activity-chart> <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() }> <g each={ d, i in data.reverse() }>
<rect width="0.8" riot-height={ d.postsH } <rect width="0.8" riot-height={ d.postsH }
riot-x={ i + 0.1 } riot-y={ 1 - d.postsH - d.repliesH - d.repostsH } riot-x={ i + 0.1 } riot-y={ 1 - d.postsH - d.repliesH - d.repostsH }

View File

@ -2,20 +2,20 @@
<nav> <nav>
<div> <div>
<span data-is-active={ mode == 'all' } @click="setMode.bind(this, 'all')">すべて<span>{ opts.count }</span></span> <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> </div>
</nav> </nav>
<div class="users" if={ !fetching && users.length != 0 }> <div class="users" v-if="!fetching && users.length != 0">
<div each={ users }> <div each={ users }>
<mk-list-user user={ this }/> <mk-list-user user={ this }/>
</div> </div>
</div> </div>
<button class="more" if={ !fetching && next != null } @click="more" disabled={ moreFetching }> <button class="more" v-if="!fetching && next != null" @click="more" disabled={ moreFetching }>
<span if={ !moreFetching }>もっと</span> <span v-if="!moreFetching">もっと</span>
<span if={ moreFetching }>読み込み中<mk-ellipsis/></span> <span v-if="moreFetching">読み込み中<mk-ellipsis/></span>
</button> </button>
<p class="no" if={ !fetching && users.length == 0 }>{ opts.noUsers }</p> <p class="no" v-if="!fetching && users.length == 0">{ opts.noUsers }</p>
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,11 +1,11 @@
<mk-activity-widget data-melt={ design == 2 }> <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> <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> <button @click="toggle" title="%i18n:desktop.tags.mk-activity-widget.toggle%">%fa:sort%</button>
</virtual> </virtual>
<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>
<mk-activity-widget-calender if={ !initializing && view == 0 } data={ [].concat(activity) }/> <mk-activity-widget-calender v-if="!initializing && view == 0" data={ [].concat(activity) }/>
<mk-activity-widget-chart if={ !initializing && view == 1 } data={ [].concat(activity) }/> <mk-activity-widget-chart v-if="!initializing && view == 1" data={ [].concat(activity) }/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,12 +1,12 @@
<mk-calendar-widget data-melt={ opts.design == 4 || opts.design == 5 }> <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> <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> <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> <button @click="next" title="%i18n:desktop.tags.mk-calendar-widget.next%">%fa:chevron-circle-right%</button>
</virtual> </virtual>
<div class="calendar"> <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-today={ year == today.getFullYear() && month == today.getMonth() + 1 && today.getDay() == i }
data-is-donichi={ i == 0 || i == 6 }>{ weekdayText[i] }</div> data-is-donichi={ i == 0 || i == 6 }>{ weekdayText[i] }</div>
<div each={ day, i in Array(paddingDays).fill(0) }></div> <div each={ day, i in Array(paddingDays).fill(0) }></div>

View File

@ -5,20 +5,20 @@
<header ref="header" onmousedown={ onHeaderMousedown }> <header ref="header" onmousedown={ onHeaderMousedown }>
<h1 data-yield="header"><yield from="header"/></h1> <h1 data-yield="header"><yield from="header"/></h1>
<div> <div>
<button class="popout" if={ popoutUrl } onmousedown={ repelMove } @click="popout" title="ポップアウト">%fa:R window-restore%</button> <button class="popout" v-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="close" v-if="canClose" onmousedown={ repelMove } @click="close" title="閉じる">%fa:times%</button>
</div> </div>
</header> </header>
<div class="content" data-yield="content"><yield from="content"/></div> <div class="content" data-yield="content"><yield from="content"/></div>
</div> </div>
<div class="handle top" if={ canResize } onmousedown={ onTopHandleMousedown }></div> <div class="handle top" v-if="canResize" onmousedown={ onTopHandleMousedown }></div>
<div class="handle right" if={ canResize } onmousedown={ onRightHandleMousedown }></div> <div class="handle right" v-if="canResize" onmousedown={ onRightHandleMousedown }></div>
<div class="handle bottom" if={ canResize } onmousedown={ onBottomHandleMousedown }></div> <div class="handle bottom" v-if="canResize" onmousedown={ onBottomHandleMousedown }></div>
<div class="handle left" if={ canResize } onmousedown={ onLeftHandleMousedown }></div> <div class="handle left" v-if="canResize" onmousedown={ onLeftHandleMousedown }></div>
<div class="handle top-left" if={ canResize } onmousedown={ onTopLeftHandleMousedown }></div> <div class="handle top-left" v-if="canResize" onmousedown={ onTopLeftHandleMousedown }></div>
<div class="handle top-right" if={ canResize } onmousedown={ onTopRightHandleMousedown }></div> <div class="handle top-right" v-if="canResize" onmousedown={ onTopRightHandleMousedown }></div>
<div class="handle bottom-right" if={ canResize } onmousedown={ onBottomRightHandleMousedown }></div> <div class="handle bottom-right" v-if="canResize" onmousedown={ onBottomRightHandleMousedown }></div>
<div class="handle bottom-left" if={ canResize } onmousedown={ onBottomLeftHandleMousedown }></div> <div class="handle bottom-left" v-if="canResize" onmousedown={ onBottomLeftHandleMousedown }></div>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -10,13 +10,13 @@
<label> <label>
<p class="caption">Named ID</p> <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 }/> <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" v-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" v-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" v-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" v-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" v-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" v-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 == 'max-range'" style="color:#FF1161">%fa:fw exclamation-triangle%30文字以内でお願いします</p>
</label> </label>
</section> </section>
<section class="description"> <section class="description">

View File

@ -1,6 +1,6 @@
<mk-app-page> <mk-app-page>
<p if={ fetching }>読み込み中</p> <p v-if="fetching">読み込み中</p>
<main if={ !fetching }> <main v-if="!fetching">
<header> <header>
<h1>{ app.name }</h1> <h1>{ app.name }</h1>
</header> </header>

View File

@ -1,10 +1,10 @@
<mk-apps-page> <mk-apps-page>
<h1>アプリを管理</h1><a href="/app/new">アプリ作成</a> <h1>アプリを管理</h1><a href="/app/new">アプリ作成</a>
<div class="apps"> <div class="apps">
<p if={ fetching }>読み込み中</p> <p v-if="fetching">読み込み中</p>
<virtual if={ !fetching }> <virtual v-if="!fetching">
<p if={ apps.length == 0 }>アプリなし</p> <p v-if="apps.length == 0">アプリなし</p>
<ul if={ apps.length > 0 }> <ul v-if="apps.length > 0">
<li each={ app in apps }><a href={ '/app/' + app.id }> <li each={ app in apps }><a href={ '/app/' + app.id }>
<p class="name">{ app.name }</p></a></li> <p class="name">{ app.name }</p></a></li>
</ul> </ul>

View File

@ -1,9 +1,9 @@
<mk-drive-selector> <mk-drive-selector>
<div class="body"> <div class="body">
<header> <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 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> </header>
<mk-drive ref="browser" select-file={ true } multiple={ opts.multiple }/> <mk-drive ref="browser" select-file={ true } multiple={ opts.multiple }/>
</div> </div>

View File

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

View File

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

View File

@ -3,7 +3,7 @@
<div class="container"> <div class="container">
<div class="thumbnail" style={ thumbnail }></div> <div class="thumbnail" style={ thumbnail }></div>
<div class="body"> <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 if file.tags.length > 0
ul.tags ul.tags

View File

@ -1,10 +1,10 @@
<mk-follow-button> <mk-follow-button>
<button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } if={ !init } @click="onclick" disabled={ wait }> <button class={ wait: wait, follow: !user.is_following, unfollow: user.is_following } v-if="!init" @click="onclick" disabled={ wait }>
<virtual if={ !wait && user.is_following }>%fa:minus%</virtual> <virtual v-if="!wait && user.is_following">%fa:minus%</virtual>
<virtual if={ !wait && !user.is_following }>%fa:plus%</virtual> <virtual v-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%' } <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> </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> <style lang="stylus" scoped>
:scope :scope
display block display block

View File

@ -1,5 +1,5 @@
<mk-home-timeline> <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%' }/> <mk-timeline ref="timeline" init={ init } more={ more } empty={ '%i18n:mobile.tags.mk-home-timeline.empty-timeline%' }/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
<mk-messaging-room-page> <mk-messaging-room-page>
<mk-ui ref="ui"> <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> </mk-ui>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

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

View File

@ -1,8 +1,8 @@
<mk-selectdrive-page> <mk-selectdrive-page>
<header> <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 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> </header>
<mk-drive ref="browser" select-file={ true } multiple={ multiple } is-naked={ true } top={ 42 }/> <mk-drive ref="browser" select-file={ true } multiple={ multiple } is-naked={ true } top={ 42 }/>

View File

@ -1,6 +1,6 @@
<mk-user-followers-page> <mk-user-followers-page>
<mk-ui ref="ui"> <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> </mk-ui>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

@ -1,6 +1,6 @@
<mk-user-following-page> <mk-user-following-page>
<mk-ui ref="ui"> <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> </mk-ui>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope

View File

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

View File

@ -2,12 +2,12 @@
<header> <header>
<button class="cancel" @click="cancel">%fa:times%</button> <button class="cancel" @click="cancel">%fa:times%</button>
<div> <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> <button class="submit" @click="post">%i18n:mobile.tags.mk-post-form.submit%</button>
</div> </div>
</header> </header>
<div class="form"> <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> <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 }> <div class="attaches" show={ files.length != 0 }>
<ul class="files" ref="attaches"> <ul class="files" ref="attaches">
@ -16,7 +16,7 @@
</li> </li>
</ul> </ul>
</div> </div>
<mk-poll-editor if={ poll } ref="poll" ondestroy={ onPollDestroyed }/> <mk-poll-editor v-if="poll" ref="poll" ondestroy={ onPollDestroyed }/>
<mk-uploader ref="uploader"/> <mk-uploader ref="uploader"/>
<button ref="upload" @click="selectFile">%fa:upload%</button> <button ref="upload" @click="selectFile">%fa:upload%</button>
<button ref="drive" @click="selectFileFromDrive">%fa:cloud%</button> <button ref="drive" @click="selectFileFromDrive">%fa:cloud%</button>

View File

@ -1,10 +1,10 @@
<mk-sub-post-content> <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> <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 if={ post.media }> <details v-if="post.media">
<summary>({ post.media.length }個のメディア)</summary> <summary>({ post.media.length }個のメディア)</summary>
<mk-images images={ post.media }/> <mk-images images={ post.media }/>
</details> </details>
<details if={ post.poll }> <details v-if="post.poll">
<summary>%i18n:mobile.tags.mk-sub-post-content.poll%</summary> <summary>%i18n:mobile.tags.mk-sub-post-content.poll%</summary>
<mk-poll post={ post }/> <mk-poll post={ post }/>
</details> </details>

View File

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

View File

@ -4,7 +4,7 @@
<div class="content"> <div class="content">
<yield /> <yield />
</div> </div>
<mk-stream-indicator if={ SIGNIN }/> <mk-stream-indicator v-if="SIGNIN"/>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block
@ -53,9 +53,9 @@
<div class="backdrop"></div> <div class="backdrop"></div>
<div class="content"> <div class="content">
<button class="nav" @click="parent.toggleDrawer">%fa:bars%</button> <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> <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>
</div> </div>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@ -227,15 +227,15 @@
<mk-ui-nav> <mk-ui-nav>
<div class="backdrop" @click="parent.toggleDrawer"></div> <div class="backdrop" @click="parent.toggleDrawer"></div>
<div class="body"> <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"/> <img class="avatar" src={ I.avatar_url + '?thumbnail&size=128' } alt="avatar"/>
<p class="name">{ I.name }</p> <p class="name">{ I.name }</p>
</a> </a>
<div class="links"> <div class="links">
<ul> <ul>
<li><a href="/">%fa:home%%i18n:mobile.tags.mk-ui-nav.home%%fa:angle-right%</a></li> <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/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 if={ hasUnreadMessagingMessages }>%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>
<ul> <ul>
<li><a href={ _CH_URL_ } target="_blank">%fa:tv%%i18n:mobile.tags.mk-ui-nav.ch%%fa:angle-right%</a></li> <li><a href={ _CH_URL_ } target="_blank">%fa:tv%%i18n:mobile.tags.mk-ui-nav.ch%%fa:angle-right%</a></li>

View File

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

View File

@ -1,16 +1,16 @@
<mk-users-list> <mk-users-list>
<nav> <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 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> </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 }/> <mk-user-preview each={ users } user={ this }/>
</div> </div>
<button class="more" if={ !fetching && next != null } @click="more" disabled={ moreFetching }> <button class="more" v-if="!fetching && next != null" @click="more" disabled={ moreFetching }>
<span if={ !moreFetching }>%i18n:mobile.tags.mk-users-list.load-more%</span> <span v-if="!moreFetching">%i18n:mobile.tags.mk-users-list.load-more%</span>
<span if={ moreFetching }>%i18n:common.loading%<mk-ellipsis/></span></button> <span v-if="moreFetching">%i18n:common.loading%<mk-ellipsis/></span></button>
<p class="no" if={ !fetching && users.length == 0 }>{ opts.noUsers }</p> <p class="no" v-if="!fetching && users.length == 0">{ opts.noUsers }</p>
<p class="fetching" if={ fetching }>%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<style lang="stylus" scoped> <style lang="stylus" scoped>
:scope :scope
display block display block

Some files were not shown because too many files have changed in this diff Show More