Skip to content

Commit af2b136

Browse files
author
Anthony Gore
committed
31
1 parent 461d307 commit af2b136

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

src/components/CalendarDay.vue

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
<template>
2-
<div :class="classObject">{{ day.format('D') }}</div>
2+
<div :class="classObject" @click="captureClick">
3+
{{ day.format('D') }}
4+
<ul class="event-list">
5+
<li v-for="event in events">{{ event.description }}</li>
6+
</ul>
7+
</div>
38
</template>
49
<script>
510
export default {
611
props: [ 'day' ],
712
computed: {
13+
events() {
14+
let mockData = [
15+
{ description: 'Random event 1', date: this.$moment('2017-02-06', 'YYYY-MM-DD') },
16+
{ description: 'Random event 2', date: this.$moment('2017-02-15', 'YYYY-MM-DD') },
17+
{ description: 'Random event 3', date: this.$moment('2017-03-14', 'YYYY-MM-DD') }
18+
];
19+
return mockData.filter(event => event.date.isSame(this.day, 'day'));
20+
},
821
classObject() {
922
let today = this.day.isSame(this.$moment(), 'day');
1023
return {
@@ -13,6 +26,12 @@
1326
past: this.day.isSameOrBefore(this.$moment(), 'day') && !today
1427
};
1528
}
29+
},
30+
methods: {
31+
captureClick(event) {
32+
this.$store.commit('eventFormPos', { x: event.clientX, y: event.clientY });
33+
this.$store.commit('eventFormActive', true);
34+
}
1635
}
1736
}
1837
</script>

src/components/EventForm.vue

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,26 @@
11
<template>
2-
<div id="event-form" :class="{ active: true }" :style="{ top: '500px', left: '500px' }"></div>
2+
<div id="event-form" :class="{ active: active }" :style="{ top: top, left: left }">
3+
<h4>Add an event</h4>
4+
<button id="close-button" @click="close">&#10005</button>
5+
</div>
36
</template>
47
<script>
5-
8+
export default {
9+
methods: {
10+
close() {
11+
this.$store.commit('eventFormActive', false);
12+
}
13+
},
14+
computed: {
15+
active() {
16+
return this.$store.state.eventFormActive;
17+
},
18+
top() {
19+
return `${this.$store.state.eventFormPosY}px`;
20+
},
21+
left() {
22+
return `${this.$store.state.eventFormPosX}px`;
23+
}
24+
}
25+
}
626
</script>

src/store/index.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,24 @@ Vue.use(Vuex);
55
export default new Vuex.Store({
66
state: {
77
currentYear: 2017,
8-
currentMonth: 2
8+
currentMonth: 2,
9+
eventFormPosX: 0,
10+
eventFormPosY: 0,
11+
eventFormActive: false
912
},
1013
mutations: {
1114
setCurrentMonth(state, payload) {
1215
state.currentMonth = payload;
1316
},
1417
setCurrentYear(state, payload) {
1518
state.currentYear = payload;
19+
},
20+
eventFormPos(state, payload) {
21+
state.eventFormPosX = payload.x;
22+
state.eventFormPosY = payload.y;
23+
},
24+
eventFormActive(state, payload) {
25+
state.eventFormActive = payload;
1626
}
1727
}
1828
});

0 commit comments

Comments
 (0)