diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-03-26 17:54:13 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-03-26 17:54:13 +0900 |
| commit | 7b0f93464ab70690395590a019ffd2d6e8bc7f1b (patch) | |
| tree | ab49ac0896d3f5e87a00fffc7d00b874bc8766a0 /src | |
| parent | Implement packForAp (diff) | |
| parent | Merge pull request #1300 from rinsuki/i18n/mobile.tags.mk-user-timeline.load-... (diff) | |
| download | sharkey-7b0f93464ab70690395590a019ffd2d6e8bc7f1b.tar.gz sharkey-7b0f93464ab70690395590a019ffd2d6e8bc7f1b.tar.bz2 sharkey-7b0f93464ab70690395590a019ffd2d6e8bc7f1b.zip | |
Merge branch 'master' of https://github.com/syuilo/misskey
Diffstat (limited to 'src')
15 files changed, 79 insertions, 86 deletions
diff --git a/src/web/app/common/views/components/images.vue b/src/web/app/common/views/components/images.vue deleted file mode 100644 index dc802a0180..0000000000 --- a/src/web/app/common/views/components/images.vue +++ /dev/null @@ -1,63 +0,0 @@ -<template> -<div class="mk-images"> - <mk-images-image v-for="image in images" ref="image" :image="image" :key="image.id"/> -</div> -</template> - -<script lang="ts"> -import Vue from 'vue'; - -export default Vue.extend({ - props: ['images'], - mounted() { - const tags = this.$refs.image as Vue[]; - - if (this.images.length == 1) { - (this.$el.style as any).gridTemplateRows = '1fr'; - - (tags[0].$el.style as any).gridColumn = '1 / 2'; - (tags[0].$el.style as any).gridRow = '1 / 2'; - } else if (this.images.length == 2) { - (this.$el.style as any).gridTemplateColumns = '1fr 1fr'; - (this.$el.style as any).gridTemplateRows = '1fr'; - - (tags[0].$el.style as any).gridColumn = '1 / 2'; - (tags[0].$el.style as any).gridRow = '1 / 2'; - (tags[1].$el.style as any).gridColumn = '2 / 3'; - (tags[1].$el.style as any).gridRow = '1 / 2'; - } else if (this.images.length == 3) { - (this.$el.style as any).gridTemplateColumns = '1fr 0.5fr'; - (this.$el.style as any).gridTemplateRows = '1fr 1fr'; - - (tags[0].$el.style as any).gridColumn = '1 / 2'; - (tags[0].$el.style as any).gridRow = '1 / 3'; - (tags[1].$el.style as any).gridColumn = '2 / 3'; - (tags[1].$el.style as any).gridRow = '1 / 2'; - (tags[2].$el.style as any).gridColumn = '2 / 3'; - (tags[2].$el.style as any).gridRow = '2 / 3'; - } else if (this.images.length == 4) { - (this.$el.style as any).gridTemplateColumns = '1fr 1fr'; - (this.$el.style as any).gridTemplateRows = '1fr 1fr'; - - (tags[0].$el.style as any).gridColumn = '1 / 2'; - (tags[0].$el.style as any).gridRow = '1 / 2'; - (tags[1].$el.style as any).gridColumn = '2 / 3'; - (tags[1].$el.style as any).gridRow = '1 / 2'; - (tags[2].$el.style as any).gridColumn = '1 / 2'; - (tags[2].$el.style as any).gridRow = '2 / 3'; - (tags[3].$el.style as any).gridColumn = '2 / 3'; - (tags[3].$el.style as any).gridRow = '2 / 3'; - } - } -}); -</script> - -<style lang="stylus" scoped> -.mk-images - display grid - grid-gap 4px - height 256px - - @media (max-width 500px) - height 192px -</style> diff --git a/src/web/app/common/views/components/index.ts b/src/web/app/common/views/components/index.ts index fbf9d22a0b..b58ba37ecb 100644 --- a/src/web/app/common/views/components/index.ts +++ b/src/web/app/common/views/components/index.ts @@ -11,7 +11,7 @@ import reactionIcon from './reaction-icon.vue'; import reactionsViewer from './reactions-viewer.vue'; import time from './time.vue'; import timer from './timer.vue'; -import images from './images.vue'; +import mediaList from './media-list.vue'; import uploader from './uploader.vue'; import specialMessage from './special-message.vue'; import streamIndicator from './stream-indicator.vue'; @@ -36,7 +36,7 @@ Vue.component('mk-reaction-icon', reactionIcon); Vue.component('mk-reactions-viewer', reactionsViewer); Vue.component('mk-time', time); Vue.component('mk-timer', timer); -Vue.component('mk-images', images); +Vue.component('mk-media-list', mediaList); Vue.component('mk-uploader', uploader); Vue.component('mk-special-message', specialMessage); Vue.component('mk-stream-indicator', streamIndicator); diff --git a/src/web/app/common/views/components/media-list.vue b/src/web/app/common/views/components/media-list.vue new file mode 100644 index 0000000000..d0da584a40 --- /dev/null +++ b/src/web/app/common/views/components/media-list.vue @@ -0,0 +1,56 @@ +<template> +<div class="mk-media-list" :data-count="mediaList.length"> + <template v-for="media in mediaList"> + <mk-media-image :image="media" :key="media.id"/> + </template> +</div> +</template> + +<script lang="ts"> +import Vue from 'vue'; + +export default Vue.extend({ + props: ['mediaList'], +}); +</script> + +<style lang="stylus" scoped> +.mk-media-list + display grid + grid-gap 4px + height 256px + + @media (max-width 500px) + height 192px + + &[data-count="1"] + grid-template-rows 1fr + &[data-count="2"] + grid-template-columns 1fr 1fr + grid-template-rows 1fr + &[data-count="3"] + grid-template-columns 1fr 0.5fr + grid-template-rows 1fr 1fr + :nth-child(1) + grid-row 1 / 3 + :nth-child(3) + grid-column 2 / 3 + grid-row 2/3 + &[data-count="4"] + grid-template-columns 1fr 1fr + grid-template-rows 1fr 1fr + + :nth-child(1) + grid-column 1 / 2 + grid-row 1 / 2 + :nth-child(2) + grid-column 2 / 3 + grid-row 1 / 2 + :nth-child(3) + grid-column 1 / 2 + grid-row 2 / 3 + :nth-child(4) + grid-column 2 / 3 + grid-row 2 / 3 + +</style> diff --git a/src/web/app/desktop/views/components/index.ts b/src/web/app/desktop/views/components/index.ts index 52b9680baa..9bca603a53 100644 --- a/src/web/app/desktop/views/components/index.ts +++ b/src/web/app/desktop/views/components/index.ts @@ -11,8 +11,8 @@ import postFormWindow from './post-form-window.vue'; import repostFormWindow from './repost-form-window.vue'; import analogClock from './analog-clock.vue'; import ellipsisIcon from './ellipsis-icon.vue'; -import imagesImage from './images-image.vue'; -import imagesImageDialog from './images-image-dialog.vue'; +import mediaImage from './media-image.vue'; +import mediaImageDialog from './media-image-dialog.vue'; import notifications from './notifications.vue'; import postForm from './post-form.vue'; import repostForm from './repost-form.vue'; @@ -40,8 +40,8 @@ Vue.component('mk-post-form-window', postFormWindow); Vue.component('mk-repost-form-window', repostFormWindow); Vue.component('mk-analog-clock', analogClock); Vue.component('mk-ellipsis-icon', ellipsisIcon); -Vue.component('mk-images-image', imagesImage); -Vue.component('mk-images-image-dialog', imagesImageDialog); +Vue.component('mk-media-image', mediaImage); +Vue.component('mk-media-image-dialog', mediaImageDialog); Vue.component('mk-notifications', notifications); Vue.component('mk-post-form', postForm); Vue.component('mk-repost-form', repostForm); diff --git a/src/web/app/desktop/views/components/images-image-dialog.vue b/src/web/app/desktop/views/components/media-image-dialog.vue index 60afa7af82..dec140d1c9 100644 --- a/src/web/app/desktop/views/components/images-image-dialog.vue +++ b/src/web/app/desktop/views/components/media-image-dialog.vue @@ -1,5 +1,5 @@ <template> -<div class="mk-images-image-dialog"> +<div class="mk-media-image-dialog"> <div class="bg" @click="close"></div> <img :src="image.url" :alt="image.name" :title="image.name" @click="close"/> </div> @@ -34,7 +34,7 @@ export default Vue.extend({ </script> <style lang="stylus" scoped> -.mk-images-image-dialog +.mk-media-image-dialog display block position fixed z-index 2048 diff --git a/src/web/app/desktop/views/components/images-image.vue b/src/web/app/desktop/views/components/media-image.vue index 5b7dc41739..bc02d0f9be 100644 --- a/src/web/app/desktop/views/components/images-image.vue +++ b/src/web/app/desktop/views/components/media-image.vue @@ -1,5 +1,5 @@ <template> -<a class="mk-images-image" +<a class="mk-media-image" :href="image.url" @mousemove="onMousemove" @mouseleave="onMouseleave" @@ -11,7 +11,7 @@ <script lang="ts"> import Vue from 'vue'; -import MkImagesImageDialog from './images-image-dialog.vue'; +import MkMediaImageDialog from './media-image-dialog.vue'; export default Vue.extend({ props: ['image'], @@ -39,7 +39,7 @@ export default Vue.extend({ }, onClick() { - (this as any).os.new(MkImagesImageDialog, { + (this as any).os.new(MkMediaImageDialog, { image: this.image }); } @@ -48,7 +48,7 @@ export default Vue.extend({ </script> <style lang="stylus" scoped> -.mk-images-image +.mk-media-image display block cursor zoom-in overflow hidden diff --git a/src/web/app/desktop/views/components/post-detail.sub.vue b/src/web/app/desktop/views/components/post-detail.sub.vue index bf6e3ac3b2..c35a07d7ca 100644 --- a/src/web/app/desktop/views/components/post-detail.sub.vue +++ b/src/web/app/desktop/views/components/post-detail.sub.vue @@ -18,7 +18,7 @@ <div class="body"> <mk-post-html v-if="post.ast" :ast="post.ast" :i="os.i" :class="$style.text"/> <div class="media" v-if="post.media"> - <mk-images :images="post.media"/> + <mk-media-list :media-list="post.media"/> </div> </div> </div> diff --git a/src/web/app/desktop/views/components/post-detail.vue b/src/web/app/desktop/views/components/post-detail.vue index 98777e224d..5845ab4f8f 100644 --- a/src/web/app/desktop/views/components/post-detail.vue +++ b/src/web/app/desktop/views/components/post-detail.vue @@ -40,7 +40,7 @@ <div class="body"> <mk-post-html :class="$style.text" v-if="p.ast" :ast="p.ast" :i="os.i"/> <div class="media" v-if="p.media"> - <mk-images :images="p.media"/> + <mk-media-list :media-list="p.media"/> </div> <mk-poll v-if="p.poll" :post="p"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/> diff --git a/src/web/app/desktop/views/components/posts.post.vue b/src/web/app/desktop/views/components/posts.post.vue index 073b89957a..71cbbc68d2 100644 --- a/src/web/app/desktop/views/components/posts.post.vue +++ b/src/web/app/desktop/views/components/posts.post.vue @@ -42,7 +42,7 @@ <a class="rp" v-if="p.repost">RP:</a> </div> <div class="media" v-if="p.media"> - <mk-images :images="p.media"/> + <mk-media-list :media-list="p.media"/> </div> <mk-poll v-if="p.poll" :post="p" ref="pollViewer"/> <div class="tags" v-if="p.tags && p.tags.length > 0"> diff --git a/src/web/app/desktop/views/components/sub-post-content.vue b/src/web/app/desktop/views/components/sub-post-content.vue index 7f4c3b4f6f..8c8f42c801 100644 --- a/src/web/app/desktop/views/components/sub-post-content.vue +++ b/src/web/app/desktop/views/components/sub-post-content.vue @@ -8,7 +8,7 @@ </div> <details v-if="post.media"> <summary>({{ post.media.length }}つのメディア)</summary> - <mk-images :images="post.media"/> + <mk-media-list :media-list="post.media"/> </details> <details v-if="post.poll"> <summary>投票</summary> diff --git a/src/web/app/mobile/views/components/index.ts b/src/web/app/mobile/views/components/index.ts index 19135d08dc..4743f50e0d 100644 --- a/src/web/app/mobile/views/components/index.ts +++ b/src/web/app/mobile/views/components/index.ts @@ -4,7 +4,7 @@ import ui from './ui.vue'; import timeline from './timeline.vue'; import post from './post.vue'; import posts from './posts.vue'; -import imagesImage from './images-image.vue'; +import mediaImage from './media-image.vue'; import drive from './drive.vue'; import postPreview from './post-preview.vue'; import subPostContent from './sub-post-content.vue'; @@ -26,7 +26,7 @@ Vue.component('mk-ui', ui); Vue.component('mk-timeline', timeline); Vue.component('mk-post', post); Vue.component('mk-posts', posts); -Vue.component('mk-images-image', imagesImage); +Vue.component('mk-media-image', mediaImage); Vue.component('mk-drive', drive); Vue.component('mk-post-preview', postPreview); Vue.component('mk-sub-post-content', subPostContent); diff --git a/src/web/app/mobile/views/components/images-image.vue b/src/web/app/mobile/views/components/media-image.vue index 6bc1dc0aee..faf8bad48a 100644 --- a/src/web/app/mobile/views/components/images-image.vue +++ b/src/web/app/mobile/views/components/media-image.vue @@ -1,5 +1,5 @@ <template> -<a class="mk-images-image" :href="image.url" target="_blank" :style="style" :title="image.name"></a> +<a class="mk-media-image" :href="image.url" target="_blank" :style="style" :title="image.name"></a> </template> <script lang="ts"> @@ -19,7 +19,7 @@ export default Vue.extend({ </script> <style lang="stylus" scoped> -.mk-images-image +.mk-media-image display block overflow hidden width 100% diff --git a/src/web/app/mobile/views/components/post-detail.vue b/src/web/app/mobile/views/components/post-detail.vue index 4b0b59eff4..9baa5de6d0 100644 --- a/src/web/app/mobile/views/components/post-detail.vue +++ b/src/web/app/mobile/views/components/post-detail.vue @@ -43,7 +43,7 @@ <router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link> </div> <div class="media" v-if="p.media"> - <mk-images :images="p.media"/> + <mk-media-list :media-list="p.media"/> </div> <mk-poll v-if="p.poll" :post="p"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/> diff --git a/src/web/app/mobile/views/components/post.vue b/src/web/app/mobile/views/components/post.vue index 8df4dbf22e..d53649b117 100644 --- a/src/web/app/mobile/views/components/post.vue +++ b/src/web/app/mobile/views/components/post.vue @@ -41,7 +41,7 @@ <a class="rp" v-if="p.repost != null">RP:</a> </div> <div class="media" v-if="p.media"> - <mk-images :images="p.media"/> + <mk-media-list :media-list="p.media"/> </div> <mk-poll v-if="p.poll" :post="p" ref="pollViewer"/> <div class="tags" v-if="p.tags && p.tags.length > 0"> diff --git a/src/web/app/mobile/views/components/sub-post-content.vue b/src/web/app/mobile/views/components/sub-post-content.vue index b97f082559..389fc420ea 100644 --- a/src/web/app/mobile/views/components/sub-post-content.vue +++ b/src/web/app/mobile/views/components/sub-post-content.vue @@ -7,7 +7,7 @@ </div> <details v-if="post.media"> <summary>({{ post.media.length }}個のメディア)</summary> - <mk-images :images="post.media"/> + <mk-media-list :media-list="post.media"/> </details> <details v-if="post.poll"> <summary>%i18n:mobile.tags.mk-sub-post-content.poll%</summary> |