@@ -19,52 +19,66 @@ governing permissions and limitations under the License.
1919 --spectrum-calendar-margin-x : 32px ;
2020 --spectrum-calendar-width : calc ((var (--spectrum-calendar-day-width ) + var (--spectrum-calendar-day-padding ) * 2 ) * 7 );
2121 --spectrum-calendar-button-gap : var (--spectrum-global-dimension-size-40 );
22+ --spectrum-calendar-title-margin-x : var (--spectrum-global-dimension-size-75 );
2223}
2324
2425.spectrum-Calendar {
25- width : var ( --spectrum-calendar-width ) ;
26- display : inline-block ;
26+ display : block ;
27+ touch-action : none ;
2728}
2829
2930.spectrum-Calendar--padded {
3031 margin : var (--spectrum-calendar-margin-x ) var (--spectrum-calendar-margin-y );
3132}
3233
3334.spectrum-Calendar-header {
34- display : flex;
35+ display : grid;
36+ grid-auto-flow : column;
37+ grid-auto-columns : 1fr ;
3538 width : 100% ;
36- align-items : center;
39+ gap : var (--spectrum-global-dimension-size-300 );
40+ }
41+
42+ .spectrum-Calendar-monthHeader {
43+ display : grid;
44+ grid-template-areas : 'prev title next' ;
45+ grid-template-columns : minmax (auto, 1fr ) auto minmax (auto, 1fr );
46+ align-content : start;
47+ width : var (--spectrum-calendar-width );
48+ padding : 0 var (--spectrum-calendar-button-gap );
49+ box-sizing : border-box;
3750}
3851
3952.spectrum-Calendar-title {
4053 font-size : var (--spectrum-calendar-title-text-size );
4154 font-weight : bold;
4255
4356 line-height : var (--spectrum-calendar-title-height );
44- margin : 0 ;
45- order : 1 ;
46- flex-grow : 1 ;
47-
57+ margin : 0 var (--spectrum-calendar-title-margin-x );
58+ grid-area : title;
4859
4960 text-align : center;
5061 overflow : hidden;
5162 white-space : nowrap;
5263 text-overflow : ellipsis;
5364}
5465
55- .spectrum-Calendar {
56- .spectrum-Calendar-prevMonth ,
57- .spectrum-Calendar-nextMonth {
58- margin : 0 var (--spectrum-calendar-button-gap );
59- }
60- }
61-
6266.spectrum-Calendar-prevMonth {
63- order : 0 ;
67+ grid-area : prev;
68+ justify-self : start;
6469}
6570
6671.spectrum-Calendar-nextMonth {
67- order : 2 ;
72+ grid-area : next;
73+ justify-self : end;
74+ }
75+
76+ .spectrum-Calendar-months {
77+ display : grid;
78+ grid-auto-flow : column;
79+ grid-auto-columns : 1fr ;
80+ gap : var (--spectrum-global-dimension-size-300 );
81+ align-items : start;
6882}
6983
7084.spectrum-Calendar-dayOfWeek {
@@ -101,7 +115,7 @@ governing permissions and limitations under the License.
101115
102116.spectrum-Calendar-table {
103117 table-layout : fixed;
104- /* width: 100%;*/
118+ width : var ( --spectrum-calendar-width );
105119
106120 border-collapse : collapse;
107121 border-spacing : 0 ;
@@ -140,18 +154,17 @@ governing permissions and limitations under the License.
140154 margin : var (--spectrum-calendar-day-padding );
141155
142156 border-radius : var (--spectrum-calendar-day-width );
143- border : var (--spectrum-calendar-day-border-size-key-focus ) solid transparent;
144157
145158 font-size : var (--spectrum-calendar-day-text-size );
146- line-height : calc ( var (--spectrum-calendar-day-width ) - var ( --spectrum-calendar-day-border-size-key-focus ) * 2 );
159+ line-height : var (--spectrum-calendar-day-height );
147160 white-space : nowrap;
148161
149162 cursor : default;
150163
151164 transition : background var (--spectrum-global-animation-duration-100 ) ease-in-out,
152165 color var (--spectrum-global-animation-duration-100 ) ease-in-out,
153166 border-color var (--spectrum-global-animation-duration-100 ) ease-in-out;
154-
167+
155168 & : focus {
156169 outline : 0 ;
157170 }
@@ -169,31 +182,29 @@ governing permissions and limitations under the License.
169182 visibility : hidden;
170183 }
171184
185+ /* focus ring */
172186 & : before {
187+ border-radius : calc (var (--spectrum-calendar-day-width ) + var (--spectrum-alias-focus-ring-gap ));
173188 content : '' ;
189+ display : block;
174190 position : absolute;
175191 top : calc (50% - calc (var (--spectrum-calendar-day-width ) / 2 ));
176192 left : calc (50% - calc (var (--spectrum-calendar-day-width ) / 2 ));
177- box-sizing : border-box;
178- width : var (--spectrum-calendar-day-width );
179- height : var (--spectrum-calendar-day-height );
180- border-radius : var (--spectrum-calendar-day-width );
181- border : var (--spectrum-calendar-day-border-size-key-focus ) solid transparent;
182- }
193+ width : calc (var (--spectrum-calendar-day-width ) + var (--spectrum-alias-focus-ring-gap ) * 2 );
194+ height : calc (var (--spectrum-calendar-day-height ) + var (--spectrum-alias-focus-ring-gap ) * 2 );
195+ margin : 0 ;
196+ transform : translateX (0 ); /* Forces FF to render on the pixel grid */
183197
184- & .is-selected : not (.is-range-selection ) {
185- font-weight : var (--spectrum-calendar-day-text-font-weight-selected );
198+ transition : box-shadow var (--spectrum-global-animation-duration-100 ) ease-out,
199+ margin var (--spectrum-global-animation-duration-100 ) ease-out;
200+ }
186201
202+ & .is-focused {
187203 & : before {
188- /* No highlight for lone selections */
189- display : none;
204+ margin : calc (var (--spectrum-alias-focus-ring-gap ) * -1 );
190205 }
191206 }
192207
193- & .is-today {
194- font-weight : var (--spectrum-calendar-day-today-text-font-weight );
195- }
196-
197208 & .is-range-selection {
198209 /* overrides to make the cells appear connected */
199210 margin : var (--spectrum-calendar-day-padding ) 0 ;
@@ -211,23 +222,21 @@ governing permissions and limitations under the License.
211222 width : calc (var (--spectrum-calendar-day-width ) + var (--spectrum-calendar-day-padding ));
212223 }
213224
214- & .is-selection-start ,
215- & .is-selection-end {
216- font-weight : var (--spectrum-calendar-day-text-font-weight-cap-selected );
217-
218- & : after {
219- position : absolute;
220- top : 0 ;
225+ /* hover and selected states */
226+ & : after {
227+ position : absolute;
228+ top : calc (50% - calc (var (--spectrum-calendar-day-width ) / 2 ));
229+ left : calc (50% - calc (var (--spectrum-calendar-day-width ) / 2 ));
221230
222- display : block;
231+ display : block;
223232
224- height : var (--spectrum-calendar-day-height );
225- width : var (--spectrum-calendar-day-width );
233+ height : var (--spectrum-calendar-day-height );
234+ width : var (--spectrum-calendar-day-width );
226235
227- border-radius : var (--spectrum-calendar-day-width );
236+ border-radius : var (--spectrum-calendar-day-width );
228237
229- content : '' ;
230- }
238+ content : '' ;
239+ z-index : -1 ;
231240 }
232241
233242 & .is-range-start ,
@@ -266,3 +275,7 @@ governing permissions and limitations under the License.
266275 }
267276 }
268277}
278+
279+ .spectrum-Calendar-body .is-range-selecting .spectrum-Calendar-date {
280+ transition : none;
281+ }
0 commit comments