Skip to content

Commit 22e05e9

Browse files
committed
month into view
1 parent db2d563 commit 22e05e9

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-draggable-cal",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"main": "dist/draggableCal.common.js",
55
"module": "dist/draggableCal.esm.js",
66
"unpkg": "dist/draggableCal.umd.js",

src/App.vue

+28-6
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,17 @@ export default {
4949
let past = this.daily.pastBreakPoints;
5050
let future = this.daily.monthBreakPoints;
5151
let off = Math.abs(this.daily.realOffset) + this.$refs.monthly.parentNode.clientWidth / 2;
52+
if (this.daily.realOffset === 0) off = 1;
53+
let changed = false;
5254
while (off <= past[past.length - 1].offset) {
5355
future.unshift(past.pop());
54-
this.toggleSelectMonth(null, past[past.length - 1]);
56+
changed = true;
5557
}
5658
while (future.length > 0 && off >= future[0].offset) {
57-
this.toggleSelectMonth(null, future[0]);
5859
past.push(future.shift());
60+
changed = true;
5961
}
62+
if (changed) this.toggleSelectMonth(null, past[past.length - 1]);
6063
return past[past.length - 1];
6164
},
6265
},
@@ -86,8 +89,8 @@ export default {
8689
pastBreakPoints: [
8790
{
8891
offset: 0,
89-
monthNumber: new Date().getMonth(),
90-
fullYear: new Date().getFullYear(),
92+
monthNumber: `${new Date().getMonth()}`,
93+
fullYear: `${new Date().getFullYear()}`,
9194
},
9295
],
9396
phase: 'sleep',
@@ -108,7 +111,6 @@ export default {
108111
this[state].realOffset + Math.floor(elem.clientWidth / cell.clientWidth) * cell.clientWidth;
109112
if (this[state].realOffset > 0) this[state].realOffset = 0;
110113
this.$refs[state].style.left = `${this[state].realOffset}px`;
111-
this.currentMonth;
112114
},
113115
goRight(e, state) {
114116
let elem = e.target.parentNode.querySelector('.ui-draggable');
@@ -118,7 +120,6 @@ export default {
118120
if (this[state].realOffset < this[state].maxOffset)
119121
this[state].realOffset = this[state].maxOffset;
120122
this.$refs[state].style.left = `${this[state].realOffset}px`;
121-
this.currentMonth;
122123
},
123124
handleDrag(e) {
124125
let state;
@@ -169,6 +170,7 @@ export default {
169170
const id = `[year="${month.fullYear}"][month="${month.monthNumber}"].cal-cell`;
170171
this.scrollIntoView(this.$refs.daily.querySelector(id));
171172
}
173+
this.checkMonthIsInView();
172174
},
173175
toggleSelect(e, day) {
174176
let exist = this.$refs.daily.querySelector('.cal-cell[selected="true"]');
@@ -216,6 +218,23 @@ export default {
216218
if (d.style.left.slice(0, -2) < d.maxOffset) d.style.left = `${d.maxOffset}px`;
217219
if (m.style.left.slice(0, -2) < m.maxOffset) m.style.left = `${m.maxOffset}px`;
218220
},
221+
checkMonthIsInView() {
222+
const sel = this.$refs.monthly.querySelector('[selected="true"]');
223+
if (sel) {
224+
const cw = sel.parentNode.parentNode.clientWidth;
225+
const m = this.monthly;
226+
if (sel.offsetLeft > -m.realOffset - sel.clientWidth + cw) {
227+
m.realOffset = -sel.offsetLeft - sel.clientWidth / 2 + cw / 2;
228+
if (m.realOffset < m.maxOffset) m.realOffset = m.maxOffset;
229+
m.style.left = `${m.realOffset}px`;
230+
}
231+
if (-sel.offsetLeft > m.realOffset) {
232+
m.realOffset = -sel.offsetLeft - sel.clientWidth / 2 + cw / 2;
233+
if (m.realOffset > 0) m.realOffset = 0;
234+
m.style.left = `${m.realOffset}px`;
235+
}
236+
}
237+
},
219238
},
220239
created() {
221240
this.calendar = buildCalendar(
@@ -250,6 +269,9 @@ export default {
250269
this.monthly.style = this.$refs.monthly.style;
251270
this.maxOffsets();
252271
},
272+
updated() {
273+
this.currentMonth;
274+
},
253275
beforeDestroy() {
254276
document.body.removeEventListener('mouseup', e => this.handleDrag(e), false);
255277
document.body.removeEventListener('mouseleave', e => this.handleDrag(e), false);

0 commit comments

Comments
 (0)