2018-02-11 08:52:37 +01:00
|
|
|
<template>
|
2018-02-13 00:31:03 +01:00
|
|
|
<div class="mk-timeline">
|
2018-04-17 07:52:28 +02:00
|
|
|
<header>
|
|
|
|
<span :data-is-active="src == 'home'" @click="src = 'home'">%fa:home% ホーム</span>
|
|
|
|
<span :data-is-active="src == 'local'" @click="src = 'local'">%fa:R comments% ローカル</span>
|
|
|
|
<span :data-is-active="src == 'global'" @click="src = 'global'">%fa:globe% グローバル</span>
|
|
|
|
</header>
|
|
|
|
<x-core v-if="src == 'home'" ref="tl" key="home" src="home"/>
|
|
|
|
<x-core v-if="src == 'local'" ref="tl" key="local" src="local"/>
|
|
|
|
<x-core v-if="src == 'global'" ref="tl" key="global" src="global"/>
|
2018-02-11 15:26:35 +01:00
|
|
|
</div>
|
2018-02-11 08:52:37 +01:00
|
|
|
</template>
|
|
|
|
|
2018-02-11 09:04:03 +01:00
|
|
|
<script lang="ts">
|
|
|
|
import Vue from 'vue';
|
2018-04-17 07:52:28 +02:00
|
|
|
import XCore from './timeline.core.vue';
|
2018-02-11 08:52:37 +01:00
|
|
|
|
2018-02-11 09:04:03 +01:00
|
|
|
export default Vue.extend({
|
2018-04-17 07:52:28 +02:00
|
|
|
components: {
|
|
|
|
XCore
|
|
|
|
},
|
|
|
|
|
2018-02-13 01:12:54 +01:00
|
|
|
data() {
|
|
|
|
return {
|
2018-04-17 07:52:28 +02:00
|
|
|
src: 'home'
|
2018-02-13 01:12:54 +01:00
|
|
|
};
|
|
|
|
},
|
2018-04-17 00:40:19 +02:00
|
|
|
|
2018-02-13 01:12:54 +01:00
|
|
|
mounted() {
|
|
|
|
document.addEventListener('keydown', this.onKeydown);
|
|
|
|
window.addEventListener('scroll', this.onScroll);
|
|
|
|
|
2018-04-17 07:52:28 +02:00
|
|
|
(this.$refs.tl as any).$once('loaded', () => {
|
|
|
|
this.$emit('loaded');
|
|
|
|
});
|
2018-02-13 01:12:54 +01:00
|
|
|
},
|
2018-04-17 00:40:19 +02:00
|
|
|
|
2018-02-13 01:12:54 +01:00
|
|
|
beforeDestroy() {
|
|
|
|
document.removeEventListener('keydown', this.onKeydown);
|
|
|
|
window.removeEventListener('scroll', this.onScroll);
|
|
|
|
},
|
2018-04-17 00:40:19 +02:00
|
|
|
|
2018-02-11 09:04:03 +01:00
|
|
|
methods: {
|
2018-02-13 01:12:54 +01:00
|
|
|
onScroll() {
|
2018-04-07 20:58:11 +02:00
|
|
|
if ((this as any).os.i.clientSettings.fetchOnScroll !== false) {
|
2018-03-05 12:09:26 +01:00
|
|
|
const current = window.scrollY + window.innerHeight;
|
2018-04-17 07:52:28 +02:00
|
|
|
if (current > document.body.offsetHeight - 8) (this.$refs.tl as any).more();
|
2018-03-05 12:09:26 +01:00
|
|
|
}
|
2018-02-13 01:12:54 +01:00
|
|
|
},
|
2018-04-17 00:40:19 +02:00
|
|
|
|
2018-02-13 01:12:54 +01:00
|
|
|
onKeydown(e) {
|
|
|
|
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
|
|
|
|
if (e.which == 84) { // t
|
2018-04-17 07:52:28 +02:00
|
|
|
(this.$refs.tl as any).focus();
|
2018-02-13 01:12:54 +01:00
|
|
|
}
|
|
|
|
}
|
2018-02-19 10:26:20 +01:00
|
|
|
},
|
2018-04-17 00:40:19 +02:00
|
|
|
|
2018-02-19 10:26:20 +01:00
|
|
|
warp(date) {
|
2018-04-17 07:52:28 +02:00
|
|
|
(this.$refs.tl as any).warp(date);
|
2018-02-11 09:04:03 +01:00
|
|
|
}
|
|
|
|
}
|
2018-02-11 08:52:37 +01:00
|
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="stylus" scoped>
|
2018-04-17 07:52:28 +02:00
|
|
|
@import '~const.styl'
|
|
|
|
|
2018-04-19 20:41:24 +02:00
|
|
|
root(isDark)
|
|
|
|
background isDark ? #282C37 : #fff
|
2018-02-13 01:12:54 +01:00
|
|
|
border solid 1px rgba(0, 0, 0, 0.075)
|
|
|
|
border-radius 6px
|
2018-02-11 08:52:37 +01:00
|
|
|
|
2018-04-17 07:52:28 +02:00
|
|
|
> header
|
2018-04-17 12:32:18 +02:00
|
|
|
padding 0 8px
|
2018-04-17 13:17:00 +02:00
|
|
|
z-index 10
|
2018-04-19 20:41:24 +02:00
|
|
|
background isDark ? #313543 : #fff
|
|
|
|
border-radius 6px 6px 0 0
|
2018-04-17 12:32:18 +02:00
|
|
|
box-shadow 0 1px rgba(0, 0, 0, 0.08)
|
2018-02-11 08:52:37 +01:00
|
|
|
|
2018-04-17 07:52:28 +02:00
|
|
|
> span
|
2018-04-17 12:32:18 +02:00
|
|
|
display inline-block
|
|
|
|
padding 0 10px
|
|
|
|
line-height 42px
|
|
|
|
font-size 12px
|
|
|
|
user-select none
|
2018-04-17 07:52:28 +02:00
|
|
|
|
2018-04-17 12:32:18 +02:00
|
|
|
&[data-is-active]
|
2018-04-17 07:52:28 +02:00
|
|
|
color $theme-color
|
2018-04-17 12:32:18 +02:00
|
|
|
cursor default
|
2018-04-17 12:33:43 +02:00
|
|
|
font-weight bold
|
2018-04-17 12:32:18 +02:00
|
|
|
|
|
|
|
&:before
|
|
|
|
content ""
|
|
|
|
display block
|
|
|
|
position absolute
|
|
|
|
bottom 0
|
|
|
|
left -8px
|
|
|
|
width calc(100% + 16px)
|
|
|
|
height 2px
|
|
|
|
background $theme-color
|
|
|
|
|
|
|
|
&:not([data-is-active])
|
2018-04-19 20:41:24 +02:00
|
|
|
color isDark ? #9aa2a7 : #6f7477
|
2018-04-17 07:52:28 +02:00
|
|
|
cursor pointer
|
|
|
|
|
|
|
|
&:hover
|
2018-04-19 20:41:24 +02:00
|
|
|
color isDark ? #d9dcde : #525a5f
|
|
|
|
|
|
|
|
.mk-timeline[data-darkmode]
|
|
|
|
root(true)
|
|
|
|
|
|
|
|
.mk-timeline:not([data-darkmode])
|
|
|
|
root(false)
|
2018-02-11 08:52:37 +01:00
|
|
|
|
|
|
|
</style>
|