@@ -3,7 +3,7 @@ import './VCalendar.sass'
3
3
4
4
// Components
5
5
import { makeVCalendarDayProps , VCalendarDay } from './VCalendarDay'
6
- import { VCalendarHeader } from './VCalendarHeader'
6
+ import { makeVCalendarHeaderProps , VCalendarHeader } from './VCalendarHeader'
7
7
import { VCalendarMonthDay } from './VCalendarMonthDay'
8
8
9
9
// Composables
@@ -17,21 +17,14 @@ import { chunkArray, genericComponent, propsFactory, useRender } from '@/util'
17
17
export const makeVCalendarProps = propsFactory ( {
18
18
hideHeader : Boolean ,
19
19
hideWeekNumber : Boolean ,
20
- title : String ,
21
- type : {
22
- type : String ,
23
- default : 'month' ,
24
- validator ( val : string ) {
25
- return [ 'month' , 'week' , 'day' ] . includes ( val )
26
- } ,
27
- } ,
28
20
weekdays : {
29
21
type : Array < number > ,
30
22
default : ( ) => [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ,
31
23
} ,
32
24
33
25
...makeCalendarProps ( ) ,
34
26
...makeVCalendarDayProps ( ) ,
27
+ ...makeVCalendarHeaderProps ( ) ,
35
28
} , 'VCalender' )
36
29
37
30
export type VCalendarSlots = {
@@ -57,25 +50,25 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
57
50
const dayNames = adapter . getWeekdays ( )
58
51
59
52
function onClickNext ( ) {
60
- if ( props . type === 'month' ) {
53
+ if ( props . viewMode === 'month' ) {
61
54
model . value = [ adapter . addMonths ( model . value [ 0 ] , 1 ) ]
62
55
}
63
- if ( props . type === 'week' ) {
56
+ if ( props . viewMode === 'week' ) {
64
57
model . value = [ adapter . addDays ( model . value [ 0 ] , 7 ) ]
65
58
}
66
- if ( props . type === 'day' ) {
59
+ if ( props . viewMode === 'day' ) {
67
60
model . value = [ adapter . addDays ( model . value [ 0 ] , 1 ) ]
68
61
}
69
62
}
70
63
71
64
function onClickPrev ( ) {
72
- if ( props . type === 'month' ) {
65
+ if ( props . viewMode === 'month' ) {
73
66
model . value = [ adapter . addMonths ( model . value [ 0 ] , - 1 ) ]
74
67
}
75
- if ( props . type === 'week' ) {
68
+ if ( props . viewMode === 'week' ) {
76
69
model . value = [ adapter . addDays ( model . value [ 0 ] , - 7 ) ]
77
70
}
78
- if ( props . type === 'day' ) {
71
+ if ( props . viewMode === 'day' ) {
79
72
model . value = [ adapter . addDays ( model . value [ 0 ] , - 1 ) ]
80
73
}
81
74
}
@@ -90,14 +83,15 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
90
83
91
84
useRender ( ( ) => {
92
85
const calendarDayProps = VCalendarDay . filterProps ( props )
86
+ const calendarHeaderProps = VCalendarHeader . filterProps ( props )
93
87
94
88
return (
95
89
< div class = { [
96
90
'v-calendar' ,
97
91
{
98
- 'v-calendar-monthly' : props . type === 'month' ,
99
- 'v-calendar-weekly' : props . type === 'week' ,
100
- 'v-calendar-day' : props . type === 'day' ,
92
+ 'v-calendar-monthly' : props . viewMode === 'month' ,
93
+ 'v-calendar-weekly' : props . viewMode === 'week' ,
94
+ 'v-calendar-day' : props . viewMode === 'day' ,
101
95
} ,
102
96
] }
103
97
>
@@ -106,6 +100,7 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
106
100
! slots . header ? (
107
101
< VCalendarHeader
108
102
key = "calendar-header"
103
+ { ...calendarHeaderProps }
109
104
title = { title . value }
110
105
onClick :next = { onClickNext }
111
106
onClick :prev = { onClickPrev }
@@ -118,7 +113,7 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
118
113
</ div >
119
114
120
115
< div class = "v-calendar__container" >
121
- { props . type === 'month' && ! props . hideDayHeader && (
116
+ { props . viewMode === 'month' && ! props . hideDayHeader && (
122
117
< div
123
118
class = {
124
119
[
@@ -140,7 +135,7 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
140
135
</ div >
141
136
) }
142
137
143
- { props . type === 'month' && (
138
+ { props . viewMode === 'month' && (
144
139
< div
145
140
key = "VCalendarMonth"
146
141
class = {
@@ -169,7 +164,7 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
169
164
</ div >
170
165
) }
171
166
172
- { props . type === 'week' && (
167
+ { props . viewMode === 'week' && (
173
168
daysInWeek . value . map ( ( day , i ) => (
174
169
< VCalendarDay
175
170
{ ...calendarDayProps }
@@ -180,7 +175,7 @@ export const VCalendar = genericComponent<VCalendarSlots>()({
180
175
) )
181
176
) }
182
177
183
- { props . type === 'day' && (
178
+ { props . viewMode === 'day' && (
184
179
< VCalendarDay
185
180
{ ...calendarDayProps }
186
181
day = { genDays ( [ model . value [ 0 ] as Date ] , adapter . date ( ) as Date ) [ 0 ] }
0 commit comments