@@ -12,10 +12,8 @@ import {
12
12
getUnitDuration ,
13
13
getWeekDays ,
14
14
getYearsRange ,
15
- isDateDisabled ,
16
15
isDateEqual ,
17
- isDateInvalid ,
18
- isDateOutsideVisibleRange ,
16
+ isDateOutsideRange ,
19
17
isDateUnavailable ,
20
18
} from "@zag-js/date-utils"
21
19
import { ariaAttr , dataAttr , getEventKey , getNativeEvent , isComposingEvent } from "@zag-js/dom-query"
@@ -81,6 +79,7 @@ export function connect<T extends PropTypes>(
81
79
} )
82
80
83
81
const separator = getLocaleSeparator ( locale )
82
+ const translations = { ...defaultTranslations , ...prop ( "translations" ) }
84
83
85
84
function getMonthWeeks ( from = startValue ) {
86
85
const numOfWeeks = prop ( "fixedWeeks" ) ? 6 : undefined
@@ -136,7 +135,7 @@ export function connect<T extends PropTypes>(
136
135
const formatter = getMonthFormatter ( locale , timeZone )
137
136
const cellState = {
138
137
focused : focusedValue . month === props . value ,
139
- selectable : ! isDateInvalid ( normalized , min , max ) ,
138
+ selectable : ! isDateOutsideRange ( normalized , min , max ) ,
140
139
selected : ! ! selectedValue . find ( ( date ) => date . month === value && date . year === focusedValue . year ) ,
141
140
valueText : formatter . format ( normalized . toDate ( timeZone ) ) ,
142
141
get disabled ( ) {
@@ -146,8 +145,6 @@ export function connect<T extends PropTypes>(
146
145
return cellState
147
146
}
148
147
149
- const translations = prop ( "translations" ) || defaultTranslations
150
-
151
148
function getDayTableCellState ( props : DayTableCellProps ) : DayTableCellState {
152
149
const { value, disabled, visibleRange = computed ( "visibleRange" ) } = props
153
150
@@ -157,11 +154,11 @@ export function connect<T extends PropTypes>(
157
154
const end = visibleRange . start . add ( unitDuration ) . subtract ( { days : 1 } )
158
155
159
156
const cellState = {
160
- invalid : isDateInvalid ( value , min , max ) ,
161
- disabled : disabled || isDateDisabled ( value , visibleRange . start , end , min , max ) ,
157
+ invalid : isDateOutsideRange ( value , min , max ) ,
158
+ disabled : disabled || isDateOutsideRange ( value , visibleRange . start , end ) || isDateOutsideRange ( value , min , max ) ,
162
159
selected : selectedValue . some ( ( date ) => isDateEqual ( value , date ) ) ,
163
160
unavailable : isDateUnavailable ( value , isDateUnavailableFn , locale , min , max ) && ! disabled ,
164
- outsideRange : isDateOutsideVisibleRange ( value , visibleRange . start , end ) ,
161
+ outsideRange : isDateOutsideRange ( value , visibleRange . start , end ) ,
165
162
inRange :
166
163
isRangePicker && ( isDateWithinRange ( value , selectedValue ) || isDateWithinRange ( value , hoveredRangeValue ) ) ,
167
164
firstInRange : isRangePicker && isDateEqual ( value , selectedValue [ 0 ] ) ,
@@ -199,9 +196,15 @@ export function connect<T extends PropTypes>(
199
196
} ,
200
197
getOffset ( duration ) {
201
198
const from = startValue . add ( duration )
199
+ const end = endValue . add ( duration )
200
+ const formatter = getMonthFormatter ( locale , timeZone )
202
201
return {
203
- visibleRange : { start : from , end : endValue . add ( duration ) } ,
202
+ visibleRange : { start : from , end } ,
204
203
weeks : getMonthWeeks ( from ) ,
204
+ visibleRangeText : {
205
+ start : formatter . format ( from . toDate ( timeZone ) ) ,
206
+ end : formatter . format ( end . toDate ( timeZone ) ) ,
207
+ } ,
205
208
}
206
209
} ,
207
210
getMonthWeeks,
@@ -641,6 +644,15 @@ export function connect<T extends PropTypes>(
641
644
} )
642
645
} ,
643
646
647
+ getViewProps ( props = { } ) {
648
+ const { view = "day" } = props
649
+ return normalize . element ( {
650
+ ...parts . view . attrs ,
651
+ "data-view" : view ,
652
+ hidden : context . get ( "view" ) !== view ,
653
+ } )
654
+ } ,
655
+
644
656
getViewTriggerProps ( props = { } ) {
645
657
const { view = "day" } = props
646
658
return normalize . button ( {
0 commit comments