xdrm.io/src/App.vue

107 lines
1.8 KiB
Vue
Raw Normal View History

2019-05-07 17:10:48 +00:00
<template>
<div id="app">
<Home/>
<SkillPicker ref='picker' @pick='onPick($event)'/>
<Timeline ref='timeline' @pick='onPicked($event)'/>
</div>
2019-05-07 17:10:48 +00:00
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import { tID } from '@/model/skills';
import Home from './components/Home.vue';
2022-10-04 11:06:09 +00:00
import Timeline from './components/Timeline.vue';
2022-10-04 16:29:27 +00:00
import SkillPicker from './components/SkillPicker.vue';
2019-05-07 17:10:48 +00:00
2019-05-07 17:10:48 +00:00
@Component({
components: {
Home,
2022-10-04 11:06:09 +00:00
Timeline,
2022-10-04 16:29:27 +00:00
SkillPicker,
},
2019-05-07 17:10:48 +00:00
})
export default class App extends Vue {
private selected: tID|null = null;
private mounted() {
const picker = this.$refs.picker as SkillPicker;
if( picker == null ){
return;
}
picker.select(tID.Vue, false);
}
// skill picker selection -> filters the timeline
protected onPick(id: tID|null) {
const timeline = this.$refs.timeline as Timeline;
if( timeline == null ){
return;
}
timeline.filter(id);
}
// skill picked from the timeline -> select on the skill picker
protected onPicked(id: tID) {
const picker = this.$refs.picker as SkillPicker;
if( picker == null ){
return;
}
picker.select(id, false);
}
}
2019-05-07 17:10:48 +00:00
</script>
<style lang="scss">
#app {
display: flex;
position: absolute;
top: 0;
left: 0;
width: 100%;
2019-05-09 16:56:46 +00:00
min-height: 100%;
height: auto;
2022-10-04 11:06:09 +00:00
font-size: 1rem;
font-family: 'Source Sans Pro';
flex-flow: column nowrap;
overflow: hidden;
background: #fff;
}
2022-10-05 09:25:22 +00:00
a {
display: inline-block;
position: relative;
color: #fff;
cursor: pointer;
&:visited {
color: #fefefa;
}
&:after {
content: '';
display: block;
position: absolute;
margin-left: 5%;
width: 90%;
height: .15rem;
background: #3333be;
transition: width .2s ease-in-out, margin-left .2s ease-in-out;
}
&:hover:after {
margin-left: 0;
width: 100%;
}
}
2019-05-07 17:10:48 +00:00
</style>