@@ -28,7 +28,7 @@ const getPlaceholder = (date: Date) => ({ ...CalendarPlaceholder, id: `empty-${d
28
28
const getLoadingPlaceholder = ( date : Date ) =>
29
29
( { ...getPlaceholder ( date ) , id : `loading-${ date . getTime ( ) } ` , type : ListScrollItemType . loading } ) as CalendarItem ;
30
30
31
- export const getEmptyWeeks = ( fromDate = DateUtils . weeks . previous ( 1 ) , loading ?: boolean ) => {
31
+ export const getEmptyWeeks = ( fromDate : Date , loading ?: boolean ) => {
32
32
return Array ( 14 )
33
33
. fill ( CalendarPlaceholder )
34
34
. map ( ( _ , index ) => {
@@ -42,16 +42,20 @@ export const useCalendarStore = defineStore('data.calendar', () => {
42
42
const loading = ref ( true ) ;
43
43
const calendar = ref < CalendarItem [ ] > ( [ ] ) ;
44
44
45
- const startCalendar = ref < Date > ( DateUtils . weeks . previous ( 1 ) ) ;
46
- const endCalendar = ref < Date > ( DateUtils . weeks . next ( 1 ) ) ;
45
+ const center = ref ( new Date ( ) ) ;
46
+ const startCalendar = ref < Date > ( DateUtils . weeks . previous ( 1 , center . value ) ) ;
47
+ const endCalendar = ref < Date > ( DateUtils . weeks . next ( 1 , center . value ) ) ;
47
48
48
49
const weeks = ref ( 1 ) ;
49
50
const days = computed ( ( ) => weeks . value * 7 * 2 ) ;
50
51
51
- const clearState = ( ) => {
52
+ const filter = ref ( '' ) ;
53
+
54
+ const clearState = ( date : Date = new Date ( ) ) => {
52
55
calendar . value = [ ] ;
53
- startCalendar . value = DateUtils . weeks . previous ( 1 ) ;
54
- endCalendar . value = DateUtils . weeks . next ( 1 ) ;
56
+ center . value = date ;
57
+ startCalendar . value = DateUtils . weeks . previous ( 1 , center . value ) ;
58
+ endCalendar . value = DateUtils . weeks . next ( 1 , center . value ) ;
55
59
} ;
56
60
57
61
const saveState = async ( ) =>
@@ -85,7 +89,7 @@ export const useCalendarStore = defineStore('data.calendar', () => {
85
89
if ( mode === 'start' ) startCalendar . value = DateUtils . previous ( days . value , startCalendar . value ) ;
86
90
87
91
const startDate = [ 'start' , 'reload' ] . includes ( mode ) ? startCalendar . value : endCalendar . value ;
88
- const endDate = DateUtils . next ( days . value , startDate ) ;
92
+ const endDate = DateUtils . next ( days . value - 1 , startDate ) ;
89
93
const start_date = startDate . toISOString ( ) . split ( 'T' ) [ 0 ] ;
90
94
91
95
if ( mode === 'end' ) endCalendar . value = DateUtils . next ( days . value , endCalendar . value ) ;
@@ -140,7 +144,7 @@ export const useCalendarStore = defineStore('data.calendar', () => {
140
144
newData . forEach ( ( item , index ) => {
141
145
if ( index === 0 ) {
142
146
// if the first item isn't the start date, add placeholders
143
- if ( item . date . toLocaleDateString ( ) !== startDate . toLocaleDateString ( ) ) {
147
+ if ( item . date . getTime ( ) > startDate . getTime ( ) && item . date . toLocaleDateString ( ) !== startDate . toLocaleDateString ( ) ) {
144
148
let previousDate : Date = item . date ;
145
149
while ( previousDate . toLocaleDateString ( ) !== startDate . toLocaleDateString ( ) ) {
146
150
previousDate = DateUtils . previous ( 1 , previousDate ) ;
@@ -155,12 +159,11 @@ export const useCalendarStore = defineStore('data.calendar', () => {
155
159
156
160
// if the last item isn't one day before the end date, add placeholders
157
161
const dayBeforeEnd = DateUtils . previous ( 1 , endDate ) ;
158
- if ( item . date . toLocaleDateString ( ) !== dayBeforeEnd . toLocaleDateString ( ) ) {
162
+ if ( item . date . getTime ( ) < dayBeforeEnd . getTime ( ) && item . date . toLocaleDateString ( ) !== dayBeforeEnd . toLocaleDateString ( ) ) {
159
163
let nextDate : Date = item . date ;
160
164
while ( nextDate . toLocaleDateString ( ) !== dayBeforeEnd . toLocaleDateString ( ) ) {
161
165
nextDate = DateUtils . next ( 1 , nextDate ) ;
162
166
spacedData . push ( getPlaceholder ( nextDate ) ) ;
163
- console . info ( 'Adding placeholder' , { nextDate : nextDate . toLocaleDateString ( ) } ) ;
164
167
}
165
168
}
166
169
return ;
@@ -200,7 +203,7 @@ export const useCalendarStore = defineStore('data.calendar', () => {
200
203
}
201
204
} ;
202
205
203
- return { clearState, saveState, restoreState, loading, pageSize : weeks , calendar, startCalendar, endCalendar, fetchCalendar } ;
206
+ return { clearState, saveState, restoreState, loading, pageSize : weeks , calendar, startCalendar, endCalendar, fetchCalendar, filter , center } ;
204
207
} ) ;
205
208
206
209
export const useCalendarStoreRefs = ( ) => storeToRefs ( useCalendarStore ( ) ) ;
0 commit comments