diff --git a/CHANGELOG.md b/CHANGELOG.md index 6980e4a481..dc50bb7b0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ChangeLog (Release Notes) ========================= 主に notable な changes を書いていきます +2493 (2017/08/29) +----------------- +* デザインの変更など + 2491 (2017/08/29) ----------------- * デザインの修正と調整 diff --git a/locales/en.yml b/locales/en.yml index b0488a775c..5e11339db5 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -355,7 +355,9 @@ mobile: notifications: "Notifications" mk-post-page: - submit: "Post" + title: "Post" + prev: "Previous post" + next: "Next post" mk-search-page: search: "Search" diff --git a/locales/ja.yml b/locales/ja.yml index 9a040f798d..62ac4cb81f 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -355,7 +355,9 @@ mobile: notifications: "通知" mk-post-page: - submit: "投稿" + title: "投稿" + prev: "前の投稿" + next: "次の投稿" mk-search-page: search: "検索" diff --git a/package.json b/package.json index a6aca1a20f..5e33be56a2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo <i@syuilo.com>", - "version": "0.0.2491", + "version": "0.0.2493", "license": "MIT", "description": "A miniblog-based SNS", "bugs": "https://github.com/syuilo/misskey/issues", diff --git a/src/web/app/common/tags/activity-table.tag b/src/web/app/common/tags/activity-table.tag index 6331e7c9c3..1d26d1788a 100644 --- a/src/web/app/common/tags/activity-table.tag +++ b/src/web/app/common/tags/activity-table.tag @@ -17,7 +17,6 @@ display block max-width 600px margin 0 auto - background #fff > svg display block diff --git a/src/web/app/mobile/tags/home-timeline.tag b/src/web/app/mobile/tags/home-timeline.tag index 7357d13916..051158597d 100644 --- a/src/web/app/mobile/tags/home-timeline.tag +++ b/src/web/app/mobile/tags/home-timeline.tag @@ -6,7 +6,7 @@ display block > mk-init-following - border-bottom solid 1px #eee + margin-bottom 8px </style> <script> diff --git a/src/web/app/mobile/tags/home.tag b/src/web/app/mobile/tags/home.tag index 48b5a67c38..d92e3ae4e5 100644 --- a/src/web/app/mobile/tags/home.tag +++ b/src/web/app/mobile/tags/home.tag @@ -7,6 +7,7 @@ > mk-home-timeline max-width 600px margin 0 auto + padding 8px @media (min-width 500px) padding 16px diff --git a/src/web/app/mobile/tags/init-following.tag b/src/web/app/mobile/tags/init-following.tag index 0c54d3a6a1..2fb7499d26 100644 --- a/src/web/app/mobile/tags/init-following.tag +++ b/src/web/app/mobile/tags/init-following.tag @@ -1,10 +1,14 @@ <mk-init-following> <p class="title">気になるユーザーをフォロー:</p> <div class="users" 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=""/></a> - <div class="body"><a class="name" href={ '/' + username } target="_blank">{ name }</a> - <p class="username">@{ username }</p> - </div> + <div class="user" each={ users }> + <header style={ banner_url ? 'background-image: url(' + banner_url + '?thumbnail&size=1024)' : '' }> + <a href={ '/' + username }> + <img src={ avatar_url + '?thumbnail&size=200' } alt="avatar"/> + </a> + </header> + <a class="name" href={ '/' + username } target="_blank">{ name }</a> + <p class="username">@{ username }</p> <mk-follow-button user={ this }/> </div> </div> @@ -15,63 +19,65 @@ <style> :scope display block - padding 16px + background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) > .title - margin 0 0 12px 0 + margin 0 + padding 8px 16px font-size 1em font-weight bold color #888 > .users - &:after - content "" - display block - clear both + overflow-x scroll + white-space nowrap + padding 16px + background #eee > .user - padding 16px - width 238px - float left + display inline-block + width 200px + text-align center + border-radius 8px + background #fff - &:after - content "" + &:not(:last-child) + margin-right 16px + + > header display block - clear both + height 80px + background-color #ddd + background-size cover + background-position center + border-radius 8px 8px 0 0 - > .avatar-anchor + > a + > img + position absolute + top 20px + left calc(50% - 40px) + width 80px + height 80px + border solid 2px #fff + border-radius 8px + + > .name display block - float left - margin 0 12px 0 0 + margin 24px 0 2px 0 + font-size 16px + color #555 - > .avatar - display block - width 42px - height 42px - margin 0 - border-radius 8px - vertical-align bottom - - > .body - float left - width calc(100% - 54px) - - > .name - margin 0 - font-size 16px - line-height 24px - color #555 - - > .username - margin 0 - font-size 15px - line-height 16px - color #ccc + > .username + margin 0 + font-size 15px + color #ccc > mk-follow-button - position absolute - top 16px - right 16px + display inline-block + margin 8px 0 16px 0 > .empty margin 0 @@ -90,7 +96,8 @@ > .refresh display block - margin 0 8px 0 0 + margin 0 + padding 8px 16px text-align right font-size 0.9em color #999 @@ -117,7 +124,7 @@ color #222 > i - padding 14px + padding 10px </style> <script> diff --git a/src/web/app/mobile/tags/notifications.tag b/src/web/app/mobile/tags/notifications.tag index 21a941e630..2f314769db 100644 --- a/src/web/app/mobile/tags/notifications.tag +++ b/src/web/app/mobile/tags/notifications.tag @@ -1,9 +1,7 @@ <mk-notifications> <div class="notifications" if={ notifications.length != 0 }> <virtual each={ notification, i in notifications }> - <div> - <mk-notification notification={ notification }/> - </div> + <mk-notification notification={ notification }/> <p class="date" if={ i != notifications.length - 1 && notification._date != notifications[i + 1]._date }><span><i class="fa fa-angle-up"></i>{ notification._datetext }</span><span><i class="fa fa-angle-down"></i>{ notifications[i + 1]._datetext }</span></p> </virtual> </div> @@ -15,20 +13,28 @@ <style> :scope display block + margin 8px auto + padding 0 + max-width 500px + width calc(100% - 16px) background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) + + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) > .notifications - > div + > mk-notification + margin 0 auto + max-width 500px border-bottom solid 1px rgba(0, 0, 0, 0.05) &:last-child border-bottom none - > mk-notification - margin 0 auto - max-width 500px - > .date display block margin 0 diff --git a/src/web/app/mobile/tags/page/home.tag b/src/web/app/mobile/tags/page/home.tag index 32c80fd20e..efb5068a57 100644 --- a/src/web/app/mobile/tags/page/home.tag +++ b/src/web/app/mobile/tags/page/home.tag @@ -20,6 +20,7 @@ this.on('mount', () => { document.title = 'Misskey' ui.trigger('title', '<i class="fa fa-home"></i>%i18n:mobile.tags.mk-home.home%'); + document.documentElement.style.background = '#313a42'; ui.trigger('func', () => { openPostForm(); diff --git a/src/web/app/mobile/tags/page/notifications.tag b/src/web/app/mobile/tags/page/notifications.tag index f90cd1628d..06a5be039f 100644 --- a/src/web/app/mobile/tags/page/notifications.tag +++ b/src/web/app/mobile/tags/page/notifications.tag @@ -13,6 +13,7 @@ this.on('mount', () => { document.title = 'Misskey | %i18n:mobile.tags.mk-notifications-page.notifications%'; ui.trigger('title', '<i class="fa fa-bell-o"></i>%i18n:mobile.tags.mk-notifications-page.notifications%'); + document.documentElement.style.background = '#313a42'; Progress.start(); diff --git a/src/web/app/mobile/tags/page/post.tag b/src/web/app/mobile/tags/page/post.tag index 7ab4ea2714..198acf1798 100644 --- a/src/web/app/mobile/tags/page/post.tag +++ b/src/web/app/mobile/tags/page/post.tag @@ -1,7 +1,9 @@ <mk-post-page> <mk-ui ref="ui"> - <main> + <main if={ !parent.fetching }> + <a if={ parent.post.next } href={ parent.post.next }><i class="fa fa-angle-up"></i>%i18n:mobile.tags.mk-post-page.next%</a> <mk-post-detail ref="post" post={ parent.post }/> + <a if={ parent.post.prev } href={ parent.post.prev }><i class="fa fa-angle-down"></i>%i18n:mobile.tags.mk-post-page.prev%</a> </main> </mk-ui> <style> @@ -9,31 +11,51 @@ display block main - background #fff + text-align center - > mk-post-detail - width 100% - max-width 500px - margin 0 auto + > a + display inline-block + &:first-child + margin-top 8px + + @media (min-width 500px) + margin-top 16px + + &:last-child + margin-bottom 8px + + @media (min-width 500px) + margin-bottom 16px + + > i + margin-right 4px </style> <script> import ui from '../../scripts/ui-event'; import Progress from '../../../common/scripts/loading'; - this.post = this.opts.post; + this.mixin('api'); + + this.fetching = true; + this.post = null; this.on('mount', () => { document.title = 'Misskey'; - ui.trigger('title', '<i class="fa fa-sticky-note-o"></i>%i18n:mobile.tags.mk-post-page.submit%'); + ui.trigger('title', '<i class="fa fa-sticky-note-o"></i>%i18n:mobile.tags.mk-post-page.title%'); + document.documentElement.style.background = '#313a42'; Progress.start(); - this.refs.ui.refs.post.on('post-fetched', () => { - Progress.set(0.5); - }); + this.api('posts/show', { + post_id: this.opts.post + }).then(post => { + + this.update({ + fetching: false, + post: post + }); - this.refs.ui.refs.post.on('loaded', () => { Progress.done(); }); }); diff --git a/src/web/app/mobile/tags/page/search.tag b/src/web/app/mobile/tags/page/search.tag index 869d5c8533..a66f07971a 100644 --- a/src/web/app/mobile/tags/page/search.tag +++ b/src/web/app/mobile/tags/page/search.tag @@ -14,6 +14,7 @@ document.title = `%i18n:mobile.tags.mk-search-page.search%: ${this.opts.query} | Misskey` // TODO: クエリをHTMLエスケープ ui.trigger('title', '<i class="fa fa-search"></i>' + this.opts.query); + document.documentElement.style.background = '#313a42'; Progress.start(); diff --git a/src/web/app/mobile/tags/page/settings/profile.tag b/src/web/app/mobile/tags/page/settings/profile.tag index 66b3fbde2a..7e1bedbf47 100644 --- a/src/web/app/mobile/tags/page/settings/profile.tag +++ b/src/web/app/mobile/tags/page/settings/profile.tag @@ -56,9 +56,13 @@ display block > div - margin 16px auto + margin 8px auto max-width 500px - width calc(100% - 32px) + width calc(100% - 16px) + + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) > p display block @@ -66,9 +70,10 @@ padding 12px 16px font-size 14px color #79d4e6 + border solid 1px #71afbb //color #276f86 //background #f8ffff - border solid 1px #a9d5de + //border solid 1px #a9d5de border-radius 8px > i diff --git a/src/web/app/mobile/tags/page/user-followers.tag b/src/web/app/mobile/tags/page/user-followers.tag index f6fcffebe2..cffb2b58c4 100644 --- a/src/web/app/mobile/tags/page/user-followers.tag +++ b/src/web/app/mobile/tags/page/user-followers.tag @@ -29,6 +29,7 @@ document.title = '%i18n:mobile.tags.mk-user-followers-page.followers-of%'.replace('{}', user.name) + ' | Misskey'; // TODO: ユーザー名をエスケープ ui.trigger('title', '<img src="' + user.avatar_url + '?thumbnail&size=64">' + '%i18n:mobile.tags.mk-user-followers-page.followers-of%'.replace('{}', user.name)); + document.documentElement.style.background = '#313a42'; this.refs.ui.refs.list.on('loaded', () => { Progress.done(); diff --git a/src/web/app/mobile/tags/page/user-following.tag b/src/web/app/mobile/tags/page/user-following.tag index 4b289b6aa3..369cb46422 100644 --- a/src/web/app/mobile/tags/page/user-following.tag +++ b/src/web/app/mobile/tags/page/user-following.tag @@ -29,6 +29,7 @@ document.title = '%i18n:mobile.tags.mk-user-following-page.following-of%'.replace('{}', user.name) + ' | Misskey'; // TODO: ユーザー名をエスケープ ui.trigger('title', '<img src="' + user.avatar_url + '?thumbnail&size=64">' + '%i18n:mobile.tags.mk-user-following-page.following-of%'.replace('{}', user.name)); + document.documentElement.style.background = '#313a42'; this.refs.ui.refs.list.on('loaded', () => { Progress.done(); diff --git a/src/web/app/mobile/tags/page/user.tag b/src/web/app/mobile/tags/page/user.tag index 05ccef3113..1abeab492a 100644 --- a/src/web/app/mobile/tags/page/user.tag +++ b/src/web/app/mobile/tags/page/user.tag @@ -13,6 +13,7 @@ this.user = this.opts.user; this.on('mount', () => { + document.documentElement.style.background = '#313a42'; Progress.start(); this.refs.ui.refs.user.on('loaded', user => { diff --git a/src/web/app/mobile/tags/post-detail.tag b/src/web/app/mobile/tags/post-detail.tag index 9d62a2b591..9215bafdbc 100644 --- a/src/web/app/mobile/tags/post-detail.tag +++ b/src/web/app/mobile/tags/post-detail.tag @@ -1,261 +1,265 @@ <mk-post-detail> - <div class="fetching" if={ fetching }> - <mk-ellipsis-icon/> + <button class="read-more" if={ p.reply_to && p.reply_to.reply_to_id && context == null } onclick={ loadContext } disabled={ loadingContext }> + <i class="fa fa-ellipsis-v" if={ !contextFetching }></i> + <i class="fa fa-spinner fa-pulse" if={ contextFetching }></i> + </button> + <div class="context"> + <virtual each={ post in context }> + <mk-post-detail-sub post={ post }/> + </virtual> </div> - <div class="main" if={ !fetching }> - <button class="read-more" if={ p.reply_to && p.reply_to.reply_to_id && context == null } onclick={ loadContext } disabled={ loadingContext }> - <i class="fa fa-ellipsis-v" if={ !contextFetching }></i> - <i class="fa fa-spinner fa-pulse" if={ contextFetching }></i> - </button> - <div class="context"> - <virtual each={ post in context }> - <mk-post-preview post={ post }/> - </virtual> - </div> - <div class="reply-to" if={ p.reply_to }> - <mk-post-preview post={ p.reply_to }/> - </div> - <div class="repost" if={ isRepost }> - <p> - <a class="avatar-anchor" href={ '/' + post.user.username }> - <img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/></a> - <i class="fa fa-retweet"></i><a class="name" href={ '/' + post.user.username }> - { post.user.name } - </a> - がRepost - </p> - </div> - <article> - <header> - <a class="avatar-anchor" href={ '/' + p.user.username }> - <img class="avatar" src={ p.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/> - </a> - <div> - <a class="name" href={ '/' + p.user.username }>{ p.user.name }</a> - <span class="username">@{ p.user.username }</span> - </div> - </header> - <div class="body"> - <div class="text" ref="text"></div> - <div class="media" if={ p.media }> - <virtual each={ file in p.media }><img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/></virtual> - </div> - <mk-poll if={ p.poll } post={ p }/> - </div> - <a class="time" href={ url }> - <mk-time time={ p.created_at } mode="detail"/> + <div class="reply-to" if={ p.reply_to }> + <mk-post-detail-sub post={ p.reply_to }/> + </div> + <div class="repost" if={ isRepost }> + <p> + <a class="avatar-anchor" href={ '/' + post.user.username }> + <img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=32' } alt="avatar"/></a> + <i class="fa fa-retweet"></i><a class="name" href={ '/' + post.user.username }> + { post.user.name } </a> - <footer> - <mk-reactions-viewer post={ p }/> - <button onclick={ reply } title="%i18n:mobile.tags.mk-post-detail.reply%"><i class="fa fa-reply"></i> - <p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p> - </button> - <button onclick={ repost } title="Repost"><i class="fa fa-retweet"></i> - <p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p> - </button> - <button class={ reacted: p.my_reaction != null } onclick={ react } ref="reactButton" title="%i18n:mobile.tags.mk-post-detail.reaction%"><i class="fa fa-plus"></i> - <p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p> - </button> - <button><i class="fa fa-ellipsis-h"></i></button> - </footer> - </article> - <div class="replies"> - <virtual each={ post in replies }> - <mk-post-preview post={ post }/> - </virtual> + がRepost + </p> + </div> + <article> + <header> + <a class="avatar-anchor" href={ '/' + p.user.username }> + <img class="avatar" src={ p.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/> + </a> + <div> + <a class="name" href={ '/' + p.user.username }>{ p.user.name }</a> + <span class="username">@{ p.user.username }</span> + </div> + </header> + <div class="body"> + <div class="text" ref="text"></div> + <div class="media" if={ p.media }> + <virtual each={ file in p.media }><img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/></virtual> + </div> + <mk-poll if={ p.poll } post={ p }/> </div> + <a class="time" href={ url }> + <mk-time time={ p.created_at } mode="detail"/> + </a> + <footer> + <mk-reactions-viewer post={ p }/> + <button onclick={ reply } title="%i18n:mobile.tags.mk-post-detail.reply%"><i class="fa fa-reply"></i> + <p class="count" if={ p.replies_count > 0 }>{ p.replies_count }</p> + </button> + <button onclick={ repost } title="Repost"><i class="fa fa-retweet"></i> + <p class="count" if={ p.repost_count > 0 }>{ p.repost_count }</p> + </button> + <button class={ reacted: p.my_reaction != null } onclick={ react } ref="reactButton" title="%i18n:mobile.tags.mk-post-detail.reaction%"><i class="fa fa-plus"></i> + <p class="count" if={ p.reactions_count > 0 }>{ p.reactions_count }</p> + </button> + <button><i class="fa fa-ellipsis-h"></i></button> + </footer> + </article> + <div class="replies"> + <virtual each={ post in replies }> + <mk-post-detail-sub post={ post }/> + </virtual> </div> <style> :scope display block - margin 0 + overflow hidden + margin 8px auto padding 0 + max-width 500px + width calc(100% - 16px) + text-align left + background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) + + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) > .fetching padding 64px 0 - > .main + > .read-more + display block + margin 0 + padding 10px 0 + width 100% + font-size 1em + text-align center + color #999 + cursor pointer + background #fafafa + outline none + border none + border-bottom solid 1px #eef0f2 + border-radius 6px 6px 0 0 + box-shadow none - > .read-more - display block - margin 0 - padding 10px 0 - width 100% - font-size 1em - text-align center - color #999 - cursor pointer - background #fafafa - outline none - border none - border-bottom solid 1px #eef0f2 - border-radius 6px 6px 0 0 - box-shadow none + &:hover + background #f6f6f6 - &:hover - background #f6f6f6 + &:active + background #f0f0f0 - &:active - background #f0f0f0 + &:disabled + color #ccc - &:disabled - color #ccc - - > .context - > * - border-bottom 1px solid #eef0f2 - - > .repost - color #9dbb00 - background linear-gradient(to bottom, #edfde2 0%, #fff 100%) - - > p - margin 0 - padding 16px 32px - - .avatar-anchor - display inline-block - - .avatar - vertical-align bottom - min-width 28px - min-height 28px - max-width 28px - max-height 28px - margin 0 8px 0 0 - border-radius 6px - - i - margin-right 4px - - .name - font-weight bold - - & + article - padding-top 8px - - > .reply-to + > .context + > * border-bottom 1px solid #eef0f2 - > article - padding 14px 16px 9px 16px + > .repost + color #9dbb00 + background linear-gradient(to bottom, #edfde2 0%, #fff 100%) - @media (min-width 500px) - padding 28px 32px 18px 32px + > p + margin 0 + padding 16px 32px - &:after - content "" + .avatar-anchor + display inline-block + + .avatar + vertical-align bottom + min-width 28px + min-height 28px + max-width 28px + max-height 28px + margin 0 8px 0 0 + border-radius 6px + + i + margin-right 4px + + .name + font-weight bold + + & + article + padding-top 8px + + > .reply-to + border-bottom 1px solid #eef0f2 + + > article + padding 14px 16px 9px 16px + + @media (min-width 500px) + padding 28px 32px 18px 32px + + &:after + content "" + display block + clear both + + &:hover + > .main > footer > button + color #888 + + > header + display flex + line-height 1.1 + + > .avatar-anchor display block - clear both + padding 0 .5em 0 0 - &:hover - > .main > footer > button - color #888 - - > header - display flex - line-height 1.1 - - > .avatar-anchor - display block - padding 0 .5em 0 0 - - > .avatar - display block - width 54px - height 54px - margin 0 - border-radius 8px - vertical-align bottom - - @media (min-width 500px) - width 60px - height 60px - - > div - - > .name - display inline-block - margin .4em 0 - color #777 - font-size 16px - font-weight bold - text-align left - text-decoration none - - &:hover - text-decoration underline - - > .username - display block - text-align left - margin 0 - color #ccc - - > .body - padding 8px 0 - - > .text - cursor default + > .avatar display block + width 54px + height 54px margin 0 - padding 0 - overflow-wrap break-word - font-size 16px - color #717171 + border-radius 8px + vertical-align bottom @media (min-width 500px) - font-size 24px + width 60px + height 60px - .link - &:after - content "\f14c" - display inline-block - padding-left 2px - font-family FontAwesome - font-size .9em - font-weight 400 - font-style normal + > div - > mk-url-preview - margin-top 8px - - > .media - > img - display block - max-width 100% - - > .time - font-size 16px - color #c0c0c0 - - > footer - font-size 1.2em - - > button - margin 0 28px 0 0 - padding 8px - background transparent - border none - box-shadow none - font-size 1em - color #ddd - cursor pointer + > .name + display inline-block + margin .4em 0 + color #777 + font-size 16px + font-weight bold + text-align left + text-decoration none &:hover - color #666 + text-decoration underline - > .count - display inline - margin 0 0 0 8px - color #999 + > .username + display block + text-align left + margin 0 + color #ccc - &.reacted - color $theme-color + > .body + padding 8px 0 - > .replies - > * - border-top 1px solid #eef0f2 + > .text + cursor default + display block + margin 0 + padding 0 + overflow-wrap break-word + font-size 16px + color #717171 + + @media (min-width 500px) + font-size 24px + + .link + &:after + content "\f14c" + display inline-block + padding-left 2px + font-family FontAwesome + font-size .9em + font-weight 400 + font-style normal + + > mk-url-preview + margin-top 8px + + > .media + > img + display block + max-width 100% + + > .time + font-size 16px + color #c0c0c0 + + > footer + font-size 1.2em + + > button + margin 0 28px 0 0 + padding 8px + background transparent + border none + box-shadow none + font-size 1em + color #ddd + cursor pointer + + &:hover + color #666 + + > .count + display inline + margin 0 0 0 8px + color #999 + + &.reacted + color $theme-color + + > .replies + > * + border-top 1px solid #eef0f2 </style> <script> @@ -265,56 +269,42 @@ this.mixin('api'); - this.fetching = true; + this.post = this.opts.post; + this.isRepost = this.post.repost != null; + this.p = this.isRepost ? this.post.repost : this.post; + this.p.reactions_count = this.p.reaction_counts ? Object.keys(this.p.reaction_counts).map(key => this.p.reaction_counts[key]).reduce((a, b) => a + b) : 0; + this.summary = getPostSummary(this.p); + this.loadingContext = false; this.context = null; - this.post = null; this.on('mount', () => { - this.api('posts/show', { - post_id: this.opts.post - }).then(post => { - const isRepost = post.repost != null; - const p = isRepost ? post.repost : post; - p.reactions_count = p.reaction_counts ? Object.keys(p.reaction_counts).map(key => p.reaction_counts[key]).reduce((a, b) => a + b) : 0; + if (this.p.text) { + const tokens = this.p.ast; - this.update({ - fetching: false, - post: post, - isRepost: isRepost, - p: p, - summary: getPostSummary(p) + this.refs.text.innerHTML = compile(tokens); + + this.refs.text.children.forEach(e => { + if (e.tagName == 'MK-URL') riot.mount(e); }); - this.trigger('loaded'); - - if (this.p.text) { - const tokens = this.p.ast; - - this.refs.text.innerHTML = compile(tokens); - - this.refs.text.children.forEach(e => { - if (e.tagName == 'MK-URL') riot.mount(e); + // URLをプレビュー + tokens + .filter(t => (t.type == 'url' || t.type == 'link') && !t.silent) + .map(t => { + riot.mount(this.refs.text.appendChild(document.createElement('mk-url-preview')), { + url: t.url }); + }); + } - // URLをプレビュー - tokens - .filter(t => (t.type == 'url' || t.type == 'link') && !t.silent) - .map(t => { - riot.mount(this.refs.text.appendChild(document.createElement('mk-url-preview')), { - url: t.url - }); - }); - } - - // Get replies - this.api('posts/replies', { - post_id: this.p.id, - limit: 8 - }).then(replies => { - this.update({ - replies: replies - }); + // Get replies + this.api('posts/replies', { + post_id: this.p.id, + limit: 8 + }).then(replies => { + this.update({ + replies: replies }); }); }); @@ -357,3 +347,101 @@ }; </script> </mk-post-detail> + +<mk-post-detail-sub> + <article> + <a class="avatar-anchor" href={ '/' + post.user.username }> + <img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/> + </a> + <div class="main"> + <header> + <a class="name" href={ '/' + post.user.username }>{ post.user.name }</a> + <span class="username">@{ post.user.username }</span> + <a class="time" href={ '/' + post.user.username + '/' + post.id }> + <mk-time time={ post.created_at }/> + </a> + </header> + <div class="body"> + <mk-sub-post-content class="text" post={ post }/> + </div> + </div> + </article> + <style> + :scope + display block + margin 0 + padding 8px + font-size 0.9em + background #fdfdfd + + @media (min-width 500px) + padding 12px + + > article + &:after + content "" + display block + clear both + + &:hover + > .main > footer > button + color #888 + + > .avatar-anchor + display block + float left + margin 0 12px 0 0 + + > .avatar + display block + width 48px + height 48px + margin 0 + border-radius 8px + vertical-align bottom + + > .main + float left + width calc(100% - 60px) + + > header + display flex + margin-bottom 4px + white-space nowrap + + > .name + display block + margin 0 .5em 0 0 + padding 0 + overflow hidden + color #607073 + font-size 1em + font-weight 700 + text-align left + text-decoration none + text-overflow ellipsis + + &:hover + text-decoration underline + + > .username + text-align left + margin 0 .5em 0 0 + color #d1d8da + + > .time + margin-left auto + color #b2b8bb + + > .body + + > .text + cursor default + margin 0 + padding 0 + font-size 1.1em + color #717171 + + </style> + <script>this.post = this.opts.post</script> +</mk-post-detail-sub> diff --git a/src/web/app/mobile/tags/post-form.tag b/src/web/app/mobile/tags/post-form.tag index 28c7796840..cf267de94a 100644 --- a/src/web/app/mobile/tags/post-form.tag +++ b/src/web/app/mobile/tags/post-form.tag @@ -1,11 +1,9 @@ <mk-post-form> <header> + <button class="cancel" onclick={ cancel }><i class="fa fa-times"></i></button> <div> - <button class="cancel" onclick={ cancel }><i class="fa fa-times"></i></button> - <div> - <span if={ refs.text } class="text-count { over: refs.text.value.length > 1000 }">{ 1000 - refs.text.value.length }</span> - <button class="submit" onclick={ post }>%i18n:mobile.tags.mk-post-form.submit%</button> - </div> + <span if={ refs.text } class="text-count { over: refs.text.value.length > 1000 }">{ 1000 - refs.text.value.length }</span> + <button class="submit" onclick={ post }>%i18n:mobile.tags.mk-post-form.submit%</button> </div> </header> <div class="form"> @@ -30,46 +28,47 @@ <style> :scope display block - padding-top 50px + max-width 500px + width calc(100% - 16px) + margin 8px auto + background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) + + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) > header - position fixed - z-index 1000 - top 0 - left 0 - width 100% + z-index 1 height 50px - background #fff + box-shadow 0 1px 0 0 rgba(0, 0, 0, 0.1) + + > .cancel + width 50px + line-height 50px + font-size 24px + color #555 > div - max-width 500px - margin 0 auto + position absolute + top 0 + right 0 - > .cancel - width 50px + > .text-count line-height 50px - font-size 24px - color #555 + color #657786 - > div - position absolute - top 0 - right 0 + > .submit + margin 8px + padding 0 16px + line-height 34px + color $theme-color-foreground + background $theme-color + border-radius 4px - > .text-count - line-height 50px - color #657786 - - > .submit - margin 8px - padding 0 16px - line-height 34px - color $theme-color-foreground - background $theme-color - border-radius 4px - - &:disabled - opacity 0.7 + &:disabled + opacity 0.7 > .form max-width 500px diff --git a/src/web/app/mobile/tags/search-posts.tag b/src/web/app/mobile/tags/search-posts.tag index 3e6caa1df2..967764bc2c 100644 --- a/src/web/app/mobile/tags/search-posts.tag +++ b/src/web/app/mobile/tags/search-posts.tag @@ -3,8 +3,16 @@ <style> :scope display block + margin 8px auto + max-width 500px + width calc(100% - 16px) background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) </style> <script> this.mixin('api'); diff --git a/src/web/app/mobile/tags/timeline.tag b/src/web/app/mobile/tags/timeline.tag index 11f4e0740b..9e39cf80d7 100644 --- a/src/web/app/mobile/tags/timeline.tag +++ b/src/web/app/mobile/tags/timeline.tag @@ -22,6 +22,8 @@ :scope display block background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) > .init padding 64px 0 @@ -47,6 +49,9 @@ > mk-timeline-post border-bottom solid 1px #eaeaea + &:first-child + border-radius 8px 8px 0 0 + &:last-of-type border-bottom none @@ -77,6 +82,7 @@ padding 16px width 100% color $theme-color + border-radius 0 0 8px 8px &:disabled opacity 0.7 diff --git a/src/web/app/mobile/tags/user-timeline.tag b/src/web/app/mobile/tags/user-timeline.tag index f7b2b36da0..4dbe719f5a 100644 --- a/src/web/app/mobile/tags/user-timeline.tag +++ b/src/web/app/mobile/tags/user-timeline.tag @@ -5,8 +5,6 @@ display block max-width 600px margin 0 auto - background #fff - </style> <script> this.mixin('api'); diff --git a/src/web/app/mobile/tags/user.tag b/src/web/app/mobile/tags/user.tag index 81eb6ba2e4..59c89ad1c8 100644 --- a/src/web/app/mobile/tags/user.tag +++ b/src/web/app/mobile/tags/user.tag @@ -57,7 +57,7 @@ > header > .banner padding-bottom 33.3% - background-color #f5f5f5 + background-color #1b1b1b background-size cover background-position center @@ -84,13 +84,13 @@ left -2px bottom -2px width 100% - border 2px solid #fff + border 2px solid #313a42 border-radius 6px @media (min-width 500px) left -4px bottom -4px - border 4px solid #fff + border 4px solid #313a42 border-radius 12px > mk-follow-button @@ -104,7 +104,7 @@ margin 0 line-height 22px font-size 20px - color #222 + color #fff > .username display inline-block @@ -131,7 +131,7 @@ > p display inline margin 0 16px 0 0 - color #555 + color #a9b9c1 > i margin-right 4px @@ -146,7 +146,7 @@ > b margin-right 4px font-size 16px - color #14171a + color #fff > i font-size 14px @@ -159,7 +159,7 @@ justify-content center margin 0 auto max-width 600px - border-bottom solid 1px #ddd + border-bottom solid 1px rgba(0, 0, 0, 0.2) > a display block @@ -177,8 +177,10 @@ border-color $theme-color > .body + padding 8px + @media (min-width 500px) - padding 16px 0 0 0 + padding 16px </style> <script> diff --git a/src/web/app/mobile/tags/users-list.tag b/src/web/app/mobile/tags/users-list.tag index fb70f184d5..295ae06694 100644 --- a/src/web/app/mobile/tags/users-list.tag +++ b/src/web/app/mobile/tags/users-list.tag @@ -14,14 +14,13 @@ <style> :scope display block - background #fff > nav display flex justify-content center margin 0 auto max-width 600px - border-bottom solid 1px #ddd + border-bottom solid 1px rgba(0, 0, 0, 0.2) > span display block @@ -43,14 +42,23 @@ padding 2px 5px font-size 12px line-height 1 - color #888 - background #eee + color #fff + background rgba(0, 0, 0, 0.3) border-radius 20px > .users + margin 8px auto + max-width 500px + width calc(100% - 16px) + background #fff + border-radius 8px + box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2) + + @media (min-width 500px) + margin 16px auto + width calc(100% - 32px) + > * - max-width 600px - margin 0 auto border-bottom solid 1px rgba(0, 0, 0, 0.05) > .no