@@ -29,6 +29,8 @@ export interface CalendarProps {
29
29
'onUpdate:year' : ( ( value : number ) => void ) | undefined
30
30
}
31
31
32
+ export type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6
33
+
32
34
// Composables
33
35
export const makeCalendarProps = propsFactory ( {
34
36
allowedDates : [ Array , Function ] as PropType < unknown [ ] | ( ( date : unknown ) => boolean ) > ,
@@ -44,14 +46,17 @@ export const makeCalendarProps = propsFactory({
44
46
showAdjacentMonths : Boolean ,
45
47
year : [ Number , String ] ,
46
48
weekdays : {
47
- type : Array < number > ,
49
+ type : Array as PropType < CalendarWeekdays [ ] > ,
48
50
default : ( ) => [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ,
49
51
} ,
50
52
weeksInMonth : {
51
53
type : String as PropType < 'dynamic' | 'static' > ,
52
54
default : 'dynamic' ,
53
55
} ,
54
- firstDayOfWeek : [ Number , String ] ,
56
+ firstDayOfWeek : {
57
+ type : [ Number , String ] ,
58
+ default : 0 ,
59
+ } ,
55
60
} , 'calendar' )
56
61
57
62
export function useCalendar ( props : CalendarProps ) {
@@ -96,17 +101,16 @@ export function useCalendar (props: CalendarProps) {
96
101
v => adapter . getMonth ( v )
97
102
)
98
103
99
- const defaultFirstDayOfWeek = computed ( ( ) => {
100
- return props . firstDayOfWeek ?? props . weekdays [ 0 ]
101
- } )
102
-
103
104
const weekDays = computed ( ( ) => {
104
- const firstDayOfWeek = Number ( props . firstDayOfWeek ?? 0 )
105
- return props . weekdays . map ( day => ( day + firstDayOfWeek ) % 7 )
105
+ const firstDayOfWeek = Number ( props . firstDayOfWeek )
106
+
107
+ // Always generate all days, regardless of props.weekdays
108
+ return [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] . map ( day => ( day + firstDayOfWeek ) % 7 )
106
109
} )
107
110
108
111
const weeksInMonth = computed ( ( ) => {
109
- const weeks = adapter . getWeekArray ( month . value , defaultFirstDayOfWeek . value )
112
+ const firstDayOfWeek = Number ( props . firstDayOfWeek )
113
+ const weeks = adapter . getWeekArray ( month . value , firstDayOfWeek )
110
114
111
115
const days = weeks . flat ( )
112
116
@@ -202,7 +206,7 @@ export function useCalendar (props: CalendarProps) {
202
206
return ! props . allowedDates ( date )
203
207
}
204
208
205
- return false
209
+ return ! props . weekdays . includes ( adapter . toJsDate ( date ) . getDay ( ) )
206
210
}
207
211
208
212
return {
0 commit comments