Skip to content

Commit 2e8faba

Browse files
authored
DatePicker and Calendar improvements (#2510)
1 parent b34e500 commit 2e8faba

File tree

83 files changed

+2689
-987
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2689
-987
lines changed

packages/@adobe/spectrum-css-temp/components/calendar/index.css

Lines changed: 73 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ governing permissions and limitations under the License.
1717
--spectrum-calendar-border-width-reset: 0;
1818
--spectrum-calendar-margin-y: 24px;
1919
--spectrum-calendar-margin-x: 32px;
20-
--spectrum-calendar-width: calc((var(--spectrum-calendar-day-width) + var(--spectrum-calendar-day-padding) * 2) * 7);
20+
--spectrum-calendar-max-width: calc((var(--spectrum-calendar-day-width) * 7) + (var(--spectrum-calendar-day-padding) * 12));
21+
--spectrum-calendar-min-width: calc(var(--spectrum-calendar-day-width) * 7);
2122
--spectrum-calendar-button-gap: var(--spectrum-global-dimension-size-40);
2223
--spectrum-calendar-title-margin-x: var(--spectrum-global-dimension-size-75);
2324
}
2425

2526
.spectrum-Calendar {
2627
display: block;
27-
touch-action: none;
28+
isolation: isolate;
2829
}
2930

3031
.spectrum-Calendar--padded {
@@ -44,7 +45,9 @@ governing permissions and limitations under the License.
4445
grid-template-areas: 'prev title next';
4546
grid-template-columns: minmax(auto, 1fr) auto minmax(auto, 1fr);
4647
align-content: start;
47-
width: var(--spectrum-calendar-width);
48+
width: 100%;
49+
min-width: var(--spectrum-calendar-min-width);
50+
max-width: var(--spectrum-calendar-max-width);
4851
padding: 0 var(--spectrum-calendar-button-gap);
4952
box-sizing: border-box;
5053
}
@@ -115,7 +118,9 @@ governing permissions and limitations under the License.
115118

116119
.spectrum-Calendar-table {
117120
table-layout: fixed;
118-
width: var(--spectrum-calendar-width);
121+
width: 100%;
122+
min-width: var(--spectrum-calendar-min-width);
123+
max-width: var(--spectrum-calendar-max-width);
119124

120125
border-collapse: collapse;
121126
border-spacing: 0;
@@ -133,7 +138,7 @@ governing permissions and limitations under the License.
133138
box-sizing: content-box;
134139
height: var(--spectrum-calendar-day-height);
135140
width: var(--spectrum-calendar-day-width);
136-
padding: var(--spectrum-calendar-day-padding);
141+
padding: var(--spectrum-calendar-day-padding) 0;
137142

138143
&:focus {
139144
outline: 0;
@@ -150,8 +155,8 @@ governing permissions and limitations under the License.
150155
box-sizing: border-box;
151156

152157
height: var(--spectrum-calendar-day-height);
153-
width: var(--spectrum-calendar-day-width);
154-
margin: var(--spectrum-calendar-day-padding);
158+
width: 100%;
159+
margin: var(--spectrum-calendar-day-padding) 0;
155160

156161
border-radius: var(--spectrum-calendar-day-width);
157162

@@ -165,6 +170,17 @@ governing permissions and limitations under the License.
165170
color var(--spectrum-global-animation-duration-100) ease-in-out,
166171
border-color var(--spectrum-global-animation-duration-100) ease-in-out;
167172

173+
/* compute the "auto" margin to center the date text manually rather than using the keyword to ensure consistent rounding. */
174+
--margin: calc((100% - var(--spectrum-calendar-day-width)) / 2);
175+
176+
.spectrum-Calendar-dateText {
177+
display: block;
178+
width: var(--spectrum-calendar-day-width);
179+
margin: 0 auto;
180+
margin-inline-start: auto;
181+
margin-inline-end: var(--margin);
182+
}
183+
168184
&:focus {
169185
outline: 0;
170186
}
@@ -205,73 +221,90 @@ governing permissions and limitations under the License.
205221
}
206222
}
207223

224+
/* hover and selected states */
225+
&:after {
226+
position: absolute;
227+
top: calc(50% - calc(var(--spectrum-calendar-day-width) / 2));
228+
left: calc(50% - calc(var(--spectrum-calendar-day-width) / 2));
229+
230+
display: block;
231+
232+
height: var(--spectrum-calendar-day-height);
233+
width: var(--spectrum-calendar-day-width);
234+
235+
border-radius: var(--spectrum-calendar-day-width);
236+
237+
content: '';
238+
z-index: -1;
239+
}
240+
208241
&.is-range-selection {
209242
/* overrides to make the cells appear connected */
210243
margin: var(--spectrum-calendar-day-padding) 0;
211244
border-width: var(--spectrum-calendar-border-width-reset);
212245
line-height: var(--spectrum-calendar-day-height);
213246
border-radius: var(--spectrum-calendar-border-radius-reset);
214247

215-
/* Todo: Calculate this */
216-
width: calc(var(--spectrum-calendar-day-width) + calc(var(--spectrum-calendar-day-padding) * 2));
217-
218-
&.is-range-start,
219-
&.is-range-end,
220-
&.is-selection-start,
221-
&.is-selection-end {
222-
width: calc(var(--spectrum-calendar-day-width) + var(--spectrum-calendar-day-padding));
223-
}
224-
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));
230-
231-
display: block;
232-
233-
height: var(--spectrum-calendar-day-height);
234-
width: var(--spectrum-calendar-day-width);
235-
236-
border-radius: var(--spectrum-calendar-day-width);
237-
238-
content: '';
239-
z-index: -1;
240-
}
241-
242248
&.is-range-start,
243249
&.is-selection-start {
244-
padding-inline-end: var(--spectrum-calendar-day-padding);
245-
margin-inline-start: var(--spectrum-calendar-day-padding);
246250
border-start-start-radius: var(--spectrum-calendar-day-width);
247251
border-end-start-radius: var(--spectrum-calendar-day-width);
252+
/* reduce the width by the "auto" margin and end align so the background doesn't extend to the left */
253+
inset-inline-start: auto;
254+
inset-inline-end: 0;
255+
width: calc(100% - var(--margin));
248256

249257
&:before,
250-
&:after {
258+
&:after,
259+
.spectrum-Calendar-dateText {
251260
inset-inline-start: 0;
252261
}
262+
263+
&:after,
264+
.spectrum-Calendar-dateText {
265+
margin-inline-start: 0;
266+
}
253267
}
254268

255269
&.is-range-end,
256270
&.is-selection-end {
257-
padding-inline-start: var(--spectrum-calendar-day-padding);
258-
margin-inline-end: var(--spectrum-calendar-day-padding);
259271
border-start-end-radius: var(--spectrum-calendar-day-width);
260272
border-end-end-radius: var(--spectrum-calendar-day-width);
273+
/* reduce the width by the "auto" margin and start align so the background doesn't extend to the right */
274+
/* this must be measured from the right rather than using width to avoid rounding errors in Safari */
275+
width: auto;
276+
inset-inline-start: 0;
277+
inset-inline-end: var(--margin);
261278

262279
&:before,
263-
&:after {
280+
&:after,
281+
.spectrum-Calendar-dateText {
264282
inset-inline-start: auto;
265283
inset-inline-end: 0;
266284
}
285+
286+
&:after,
287+
.spectrum-Calendar-dateText {
288+
margin-inline-end: 0;
289+
}
267290
}
268291

269292
&.is-selection-start.is-selection-end,
270293
&.is-selection-start.is-range-end,
271294
&.is-selection-end.is-range-start,
272295
&.is-range-start.is-range-end {
273296
width: var(--spectrum-calendar-day-width);
297+
inset-inline-start: 0;
298+
inset-inline-end: 0;
299+
margin-inline-start: auto;
300+
margin-inline-end: var(--margin);
274301
border-radius: var(--spectrum-calendar-day-width);
302+
303+
&:after,
304+
.spectrum-Calendar-dateText {
305+
margin-inline-start: auto;
306+
margin-inline-end: var(--margin);
307+
}
275308
}
276309
}
277310
}

packages/@adobe/spectrum-css-temp/components/calendar/skin.css

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,12 @@ governing permissions and limitations under the License.
3333
--spectrum-calendar-day-today-background-color-down: var(--spectrum-global-color-gray-500);
3434

3535
--background: transparent;
36-
background: var(--background);
36+
&:after {
37+
background: var(--background);
38+
}
3739

3840
&.is-range-selection {
3941
background: var(--spectrum-calendar-day-background-color-selected);
40-
41-
&:after {
42-
background: var(--background);
43-
}
4442
}
4543

4644
&.is-today {

packages/@adobe/spectrum-css-temp/components/dialog/index.css

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ governing permissions and limitations under the License.
6161
max-height: inherit;
6262

6363
outline: none;
64+
65+
--spectrum-dialog-padding-x: var(--spectrum-dialog-padding);
66+
--spectrum-dialog-padding-y: var(--spectrum-dialog-padding);
6467
}
6568

6669
.spectrum-Dialog--small {
@@ -89,8 +92,8 @@ governing permissions and limitations under the License.
8992

9093
.spectrum-Dialog .spectrum-Dialog-grid {
9194
display: grid;
92-
grid-template-columns: var(--spectrum-dialog-padding) auto 1fr auto minmax(0, auto) var(--spectrum-dialog-padding);
93-
grid-template-rows: auto var(--spectrum-dialog-padding) auto auto 1fr auto var(--spectrum-dialog-padding);
95+
grid-template-columns: var(--spectrum-dialog-padding-x) auto 1fr auto minmax(0, auto) var(--spectrum-dialog-padding-x);
96+
grid-template-rows: auto var(--spectrum-dialog-padding-y) auto auto 1fr auto var(--spectrum-dialog-padding-y);
9497
grid-template-areas:
9598
"hero hero hero hero hero hero"
9699
". . . . . ."
@@ -214,8 +217,8 @@ governing permissions and limitations under the License.
214217
}
215218

216219
.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid {
217-
grid-template-columns: var(--spectrum-dialog-padding) auto 1fr auto minmax(0, auto) minmax(0, var(--spectrum-dialog-close-button-size)) var(--spectrum-dialog-padding);
218-
grid-template-rows: auto var(--spectrum-dialog-padding) auto auto 1fr auto var(--spectrum-dialog-padding);
220+
grid-template-columns: var(--spectrum-dialog-padding-x) auto 1fr auto minmax(0, auto) minmax(0, var(--spectrum-dialog-close-button-size)) var(--spectrum-dialog-padding-x);
221+
grid-template-rows: auto var(--spectrum-dialog-padding-y) auto auto 1fr auto var(--spectrum-dialog-padding-y);
219222
grid-template-areas:
220223
"hero hero hero hero hero hero hero"
221224
". . . . . closeButton closeButton"
@@ -266,8 +269,8 @@ governing permissions and limitations under the License.
266269

267270
&.spectrum-Dialog .spectrum-Dialog-grid {
268271
display: grid;
269-
grid-template-columns: var(--spectrum-dialog-padding) 1fr auto auto var(--spectrum-dialog-padding);
270-
grid-template-rows: var(--spectrum-dialog-padding) auto auto 1fr var(--spectrum-dialog-padding);
272+
grid-template-columns: var(--spectrum-dialog-padding-x) 1fr auto auto var(--spectrum-dialog-padding-x);
273+
grid-template-rows: var(--spectrum-dialog-padding-y) auto auto 1fr var(--spectrum-dialog-padding-y);
271274
grid-template-areas:
272275
". . . . ."
273276
". heading header buttonGroup ."
@@ -305,8 +308,8 @@ governing permissions and limitations under the License.
305308
}
306309

307310
.spectrum-Dialog .spectrum-Dialog-grid {
308-
grid-template-columns: var(--spectrum-dialog-padding) auto 1fr auto minmax(0, auto) var(--spectrum-dialog-padding);
309-
grid-template-rows: auto var(--spectrum-dialog-padding) auto auto auto 1fr auto var(--spectrum-dialog-padding);
311+
grid-template-columns: var(--spectrum-dialog-padding-x) auto 1fr auto minmax(0, auto) var(--spectrum-dialog-padding-x);
312+
grid-template-rows: auto var(--spectrum-dialog-padding-y) auto auto auto 1fr auto var(--spectrum-dialog-padding-y);
310313
grid-template-areas:
311314
"hero hero hero hero hero hero"
312315
". . . . . ."
@@ -319,8 +322,8 @@ governing permissions and limitations under the License.
319322
}
320323

321324
.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid {
322-
grid-template-columns: var(--spectrum-dialog-padding) auto 1fr auto minmax(0, auto) minmax(0, var(--spectrum-dialog-close-button-size)) var(--spectrum-dialog-padding);
323-
grid-template-rows: auto var(--spectrum-dialog-padding) auto auto auto 1fr auto var(--spectrum-dialog-padding);
325+
grid-template-columns: var(--spectrum-dialog-padding-x) auto 1fr auto minmax(0, auto) minmax(0, var(--spectrum-dialog-close-button-size)) var(--spectrum-dialog-padding-x);
326+
grid-template-rows: auto var(--spectrum-dialog-padding-y) auto auto auto 1fr auto var(--spectrum-dialog-padding-y);
324327
grid-template-areas:
325328
"hero hero hero hero hero hero hero"
326329
". . . . . closeButton closeButton"
@@ -341,8 +344,8 @@ governing permissions and limitations under the License.
341344

342345
&.spectrum-Dialog .spectrum-Dialog-grid {
343346
display: grid;
344-
grid-template-columns: var(--spectrum-dialog-padding) 1fr var(--spectrum-dialog-padding);
345-
grid-template-rows: var(--spectrum-dialog-padding) auto auto auto 1fr auto var(--spectrum-dialog-padding);
347+
grid-template-columns: var(--spectrum-dialog-padding-x) 1fr var(--spectrum-dialog-padding-x);
348+
grid-template-rows: var(--spectrum-dialog-padding-y) auto auto auto 1fr auto var(--spectrum-dialog-padding-y);
346349
grid-template-areas:
347350
". . ."
348351
". heading ."

packages/@internationalized/date/src/DateFormatter.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,10 @@ function getResolvedHourCycle(locale: string, options: Intl.DateTimeFormatOption
162162
// Format the minimum possible hour and maximum possible hour in a day and parse the results.
163163
locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');
164164
locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';
165-
let formatter = getCachedDateFormatter(locale, options);
165+
let formatter = getCachedDateFormatter(locale, {
166+
...options,
167+
timeZone: undefined // use local timezone
168+
});
166169

167170
let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find(p => p.type === 'hour').value, 10);
168171
let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find(p => p.type === 'hour').value, 10);

0 commit comments

Comments
 (0)