@cloudscape-design/components-themeable 3.0.895 → 3.0.897

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/date-range-picker/calendar/grids/styles.scss +52 -44
  3. package/lib/internal/scss/date-range-picker/relative-range/styles.scss +0 -9
  4. package/lib/internal/scss/date-range-picker/styles.scss +2 -47
  5. package/lib/internal/scss/date-range-picker/test-classes/styles.scss +37 -2
  6. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  7. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
  8. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  9. package/lib/internal/template/breadcrumb-group/item/item.d.ts.map +1 -1
  10. package/lib/internal/template/breadcrumb-group/item/item.js +1 -1
  11. package/lib/internal/template/breadcrumb-group/item/item.js.map +1 -1
  12. package/lib/internal/template/button/internal.d.ts.map +1 -1
  13. package/lib/internal/template/button/internal.js +1 -1
  14. package/lib/internal/template/button/internal.js.map +1 -1
  15. package/lib/internal/template/button-group/file-input-item.d.ts +5 -3
  16. package/lib/internal/template/button-group/file-input-item.d.ts.map +1 -1
  17. package/lib/internal/template/button-group/file-input-item.js +2 -2
  18. package/lib/internal/template/button-group/file-input-item.js.map +1 -1
  19. package/lib/internal/template/button-group/icon-button-item.d.ts +5 -3
  20. package/lib/internal/template/button-group/icon-button-item.d.ts.map +1 -1
  21. package/lib/internal/template/button-group/icon-button-item.js +2 -2
  22. package/lib/internal/template/button-group/icon-button-item.js.map +1 -1
  23. package/lib/internal/template/button-group/icon-toggle-button-item.d.ts +5 -3
  24. package/lib/internal/template/button-group/icon-toggle-button-item.d.ts.map +1 -1
  25. package/lib/internal/template/button-group/icon-toggle-button-item.js +2 -2
  26. package/lib/internal/template/button-group/icon-toggle-button-item.js.map +1 -1
  27. package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
  28. package/lib/internal/template/button-group/item-element.js +4 -4
  29. package/lib/internal/template/button-group/item-element.js.map +1 -1
  30. package/lib/internal/template/button-group/menu-dropdown-item.d.ts +1 -0
  31. package/lib/internal/template/button-group/menu-dropdown-item.d.ts.map +1 -1
  32. package/lib/internal/template/button-group/menu-dropdown-item.js +2 -2
  33. package/lib/internal/template/button-group/menu-dropdown-item.js.map +1 -1
  34. package/lib/internal/template/calendar/grid/index.d.ts.map +1 -1
  35. package/lib/internal/template/calendar/grid/index.js +1 -1
  36. package/lib/internal/template/calendar/grid/index.js.map +1 -1
  37. package/lib/internal/template/date-range-picker/calendar/grids/grid-cell.d.ts.map +1 -1
  38. package/lib/internal/template/date-range-picker/calendar/grids/grid-cell.js +2 -2
  39. package/lib/internal/template/date-range-picker/calendar/grids/grid-cell.js.map +1 -1
  40. package/lib/internal/template/date-range-picker/calendar/grids/grid.d.ts +18 -0
  41. package/lib/internal/template/date-range-picker/calendar/grids/grid.d.ts.map +1 -0
  42. package/lib/internal/template/date-range-picker/calendar/grids/grid.js +174 -0
  43. package/lib/internal/template/date-range-picker/calendar/grids/grid.js.map +1 -0
  44. package/lib/internal/template/date-range-picker/calendar/grids/index.d.ts +3 -20
  45. package/lib/internal/template/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  46. package/lib/internal/template/date-range-picker/calendar/grids/index.js +51 -22
  47. package/lib/internal/template/date-range-picker/calendar/grids/index.js.map +1 -1
  48. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts +47 -0
  49. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts.map +1 -0
  50. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.js +2 -0
  51. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.js.map +1 -0
  52. package/lib/internal/template/date-range-picker/calendar/grids/intl.d.ts +17 -0
  53. package/lib/internal/template/date-range-picker/calendar/grids/intl.d.ts.map +1 -0
  54. package/lib/internal/template/date-range-picker/calendar/grids/intl.js +56 -0
  55. package/lib/internal/template/date-range-picker/calendar/grids/intl.js.map +1 -0
  56. package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +30 -24
  57. package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +62 -46
  58. package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +30 -24
  59. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts +5 -4
  60. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts.map +1 -1
  61. package/lib/internal/template/date-range-picker/calendar/header/header-button.js +6 -6
  62. package/lib/internal/template/date-range-picker/calendar/header/header-button.js.map +1 -1
  63. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts +6 -4
  64. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts.map +1 -1
  65. package/lib/internal/template/date-range-picker/calendar/header/index.js +18 -13
  66. package/lib/internal/template/date-range-picker/calendar/header/index.js.map +1 -1
  67. package/lib/internal/template/date-range-picker/calendar/index.d.ts +2 -1
  68. package/lib/internal/template/date-range-picker/calendar/index.d.ts.map +1 -1
  69. package/lib/internal/template/date-range-picker/calendar/index.js +49 -41
  70. package/lib/internal/template/date-range-picker/calendar/index.js.map +1 -1
  71. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts +4 -3
  72. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts.map +1 -1
  73. package/lib/internal/template/date-range-picker/calendar/range-inputs.js +23 -10
  74. package/lib/internal/template/date-range-picker/calendar/range-inputs.js.map +1 -1
  75. package/lib/internal/template/date-range-picker/calendar/utils.d.ts +2 -0
  76. package/lib/internal/template/date-range-picker/calendar/utils.d.ts.map +1 -1
  77. package/lib/internal/template/date-range-picker/calendar/utils.js +27 -1
  78. package/lib/internal/template/date-range-picker/calendar/utils.js.map +1 -1
  79. package/lib/internal/template/date-range-picker/dropdown.d.ts +3 -2
  80. package/lib/internal/template/date-range-picker/dropdown.d.ts.map +1 -1
  81. package/lib/internal/template/date-range-picker/dropdown.js +21 -13
  82. package/lib/internal/template/date-range-picker/dropdown.js.map +1 -1
  83. package/lib/internal/template/date-range-picker/index.d.ts.map +1 -1
  84. package/lib/internal/template/date-range-picker/index.js +17 -8
  85. package/lib/internal/template/date-range-picker/index.js.map +1 -1
  86. package/lib/internal/template/date-range-picker/interfaces.d.ts +89 -14
  87. package/lib/internal/template/date-range-picker/interfaces.d.ts.map +1 -1
  88. package/lib/internal/template/date-range-picker/interfaces.js.map +1 -1
  89. package/lib/internal/template/date-range-picker/mode-switcher.js +2 -2
  90. package/lib/internal/template/date-range-picker/mode-switcher.js.map +1 -1
  91. package/lib/internal/template/date-range-picker/relative-range/index.d.ts +2 -1
  92. package/lib/internal/template/date-range-picker/relative-range/index.d.ts.map +1 -1
  93. package/lib/internal/template/date-range-picker/relative-range/index.js +14 -8
  94. package/lib/internal/template/date-range-picker/relative-range/index.js.map +1 -1
  95. package/lib/internal/template/date-range-picker/relative-range/styles.css.js +6 -9
  96. package/lib/internal/template/date-range-picker/relative-range/styles.scoped.css +10 -19
  97. package/lib/internal/template/date-range-picker/relative-range/styles.selectors.js +6 -9
  98. package/lib/internal/template/date-range-picker/styles.css.js +23 -38
  99. package/lib/internal/template/date-range-picker/styles.scoped.css +32 -78
  100. package/lib/internal/template/date-range-picker/styles.selectors.js +23 -38
  101. package/lib/internal/template/date-range-picker/test-classes/styles.css.js +36 -2
  102. package/lib/internal/template/date-range-picker/test-classes/styles.scoped.css +36 -2
  103. package/lib/internal/template/date-range-picker/test-classes/styles.selectors.js +36 -2
  104. package/lib/internal/template/date-range-picker/utils.d.ts +9 -11
  105. package/lib/internal/template/date-range-picker/utils.d.ts.map +1 -1
  106. package/lib/internal/template/date-range-picker/utils.js +43 -32
  107. package/lib/internal/template/date-range-picker/utils.js.map +1 -1
  108. package/lib/internal/template/file-token-group/file-token.d.ts.map +1 -1
  109. package/lib/internal/template/file-token-group/file-token.js +1 -1
  110. package/lib/internal/template/file-token-group/file-token.js.map +1 -1
  111. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  112. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  113. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  114. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  115. package/lib/internal/template/i18n/messages-types.d.ts +9 -0
  116. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  117. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  118. package/lib/internal/template/internal/components/tooltip/index.d.ts +2 -1
  119. package/lib/internal/template/internal/components/tooltip/index.d.ts.map +1 -1
  120. package/lib/internal/template/internal/components/tooltip/index.js +21 -2
  121. package/lib/internal/template/internal/components/tooltip/index.js.map +1 -1
  122. package/lib/internal/template/internal/environment.js +1 -1
  123. package/lib/internal/template/internal/environment.json +1 -1
  124. package/lib/internal/template/internal/utils/date-time/calendar.d.ts +22 -6
  125. package/lib/internal/template/internal/utils/date-time/calendar.d.ts.map +1 -1
  126. package/lib/internal/template/internal/utils/date-time/calendar.js +62 -6
  127. package/lib/internal/template/internal/utils/date-time/calendar.js.map +1 -1
  128. package/lib/internal/template/multiselect/index.d.ts.map +1 -1
  129. package/lib/internal/template/multiselect/index.js +2 -3
  130. package/lib/internal/template/multiselect/index.js.map +1 -1
  131. package/lib/internal/template/progress-bar/index.d.ts.map +1 -1
  132. package/lib/internal/template/progress-bar/index.js +4 -3
  133. package/lib/internal/template/progress-bar/index.js.map +1 -1
  134. package/lib/internal/template/progress-bar/internal.js +2 -2
  135. package/lib/internal/template/progress-bar/internal.js.map +1 -1
  136. package/lib/internal/template/segmented-control/segment.d.ts.map +1 -1
  137. package/lib/internal/template/segmented-control/segment.js +1 -1
  138. package/lib/internal/template/segmented-control/segment.js.map +1 -1
  139. package/lib/internal/template/select/parts/item.d.ts.map +1 -1
  140. package/lib/internal/template/select/parts/item.js +4 -2
  141. package/lib/internal/template/select/parts/item.js.map +1 -1
  142. package/lib/internal/template/select/parts/multiselect-item.d.ts.map +1 -1
  143. package/lib/internal/template/select/parts/multiselect-item.js +4 -2
  144. package/lib/internal/template/select/parts/multiselect-item.js.map +1 -1
  145. package/lib/internal/template/slider/internal.d.ts.map +1 -1
  146. package/lib/internal/template/slider/internal.js +1 -1
  147. package/lib/internal/template/slider/internal.js.map +1 -1
  148. package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
  149. package/lib/internal/template/tabs/tab-header-bar.js +1 -1
  150. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  151. package/lib/internal/template/test-utils/dom/date-range-picker/index.d.ts +26 -0
  152. package/lib/internal/template/test-utils/dom/date-range-picker/index.js +58 -24
  153. package/lib/internal/template/test-utils/dom/date-range-picker/index.js.map +1 -1
  154. package/lib/internal/template/test-utils/selectors/date-range-picker/index.d.ts +26 -0
  155. package/lib/internal/template/test-utils/selectors/date-range-picker/index.js +58 -24
  156. package/lib/internal/template/test-utils/selectors/date-range-picker/index.js.map +1 -1
  157. package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +1 -1
  159. package/lib/internal/template/date-range-picker/calendar/grids/monthly-grid.d.ts +0 -39
  160. package/lib/internal/template/date-range-picker/calendar/grids/monthly-grid.d.ts.map +0 -1
  161. package/lib/internal/template/date-range-picker/calendar/grids/monthly-grid.js +0 -97
  162. package/lib/internal/template/date-range-picker/calendar/grids/monthly-grid.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/components-themeable",
3
- "version": "3.0.895",
3
+ "version": "3.0.897",
4
4
  "files": [
5
5
  "lib"
6
6
  ],
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import { DateRangePickerProps, DayIndex } from '../../interfaces';
3
- /**
4
- * Calendar grid supports two mechanisms of keyboard navigation:
5
- * - Native screen-reader table navigation (semantic table markup);
6
- * - Keyboard arrow-keys navigation (a custom key-down handler).
7
- *
8
- * The implementation largely follows the w3 example (https://www.w3.org/WAI/ARIA/apg/example-index/dialog-modal/datepicker-dialog) and shares the following issues:
9
- * - (table navigation) Chrome+VO - weekday is announced twice when navigating to the calendar's header;
10
- * - (table navigation) Safari+VO - "dimmed" state is announced twice;
11
- * - (table navigation) Firefox/Chrome+NVDA - cannot use table navigation if any cell has a focus;
12
- * - (keyboard navigation) Firefox+NVDA - every day is announced as "not selected";
13
- * - (keyboard navigation) Safari/Chrome+VO - weekdays are not announced;
14
- * - (keyboard navigation) Safari/Chrome+VO - days are not announced as interactive (clickable or selectable);
15
- * - (keyboard navigation) Safari/Chrome+VO - day announcements are not interruptive and can be missed if navigating fast.
16
- */
17
- interface GridProps {
18
- padDates: 'before' | 'after';
19
- baseDate: Date;
20
- selectedStartDate: Date | null;
21
- selectedEndDate: Date | null;
22
- rangeStartDate: Date | null;
23
- rangeEndDate: Date | null;
24
- focusedDate: Date | null;
25
- focusedDateRef: React.RefObject<HTMLTableCellElement>;
26
- onSelectDate: (date: Date) => void;
27
- onGridKeyDownHandler: (e: React.KeyboardEvent<HTMLElement>) => void;
28
- onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;
29
- isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;
30
- dateDisabledReason: DateRangePickerProps.DateDisabledReasonFunction;
31
- locale: string;
32
- startOfWeek: DayIndex;
33
- todayAriaLabel?: string;
34
- ariaLabelledby: string;
35
- className?: string;
36
- }
37
- export declare function MonthlyGrid({ padDates, baseDate, selectedStartDate, selectedEndDate, rangeStartDate, rangeEndDate, focusedDate, focusedDateRef, onSelectDate, onGridKeyDownHandler, onFocusedDateChange, isDateEnabled, dateDisabledReason, locale, startOfWeek, todayAriaLabel, ariaLabelledby, className, }: GridProps): JSX.Element;
38
- export {};
39
- //# sourceMappingURL=monthly-grid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monthly-grid.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/monthly-grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAQvC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMlE;;;;;;;;;;;;;GAaG;AAEH,UAAU,SAAS;IACjB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,QAAQ,EAAE,IAAI,CAAC;IACf,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAE7B,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAE1B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAEtD,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAEvE,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC1D,kBAAkB,EAAE,oBAAoB,CAAC,0BAA0B,CAAC;IAEpE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,cAAc,EAEd,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EAEnB,aAAa,EACb,kBAAkB,EAElB,MAAM,EACN,WAAW,EACX,cAAc,EACd,cAAc,EAEd,SAAS,GACV,EAAE,SAAS,eA0IX"}
@@ -1,97 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import React, { useMemo } from 'react';
4
- import clsx from 'clsx';
5
- import { isAfter, isBefore, isLastDayOfMonth, isSameDay, isSameMonth, isToday } from 'date-fns';
6
- import { getDateLabel, renderDayName } from '../../../calendar/utils/intl';
7
- import ScreenreaderOnly from '../../../internal/components/screenreader-only/index.js';
8
- import { formatDate } from '../../../internal/utils/date-time';
9
- import { MonthCalendar } from '../../../internal/utils/date-time/calendar';
10
- import { GridCell } from './grid-cell';
11
- import testStyles from '../../test-classes/styles.css.js';
12
- import styles from './styles.css.js';
13
- export function MonthlyGrid({ padDates, baseDate, selectedStartDate, selectedEndDate, rangeStartDate, rangeEndDate, focusedDate, focusedDateRef, onSelectDate, onGridKeyDownHandler, onFocusedDateChange, isDateEnabled, dateDisabledReason, locale, startOfWeek, todayAriaLabel, ariaLabelledby, className, }) {
14
- // `baseDateTime` is used as a more stable replacement for baseDate
15
- const baseDateTime = baseDate === null || baseDate === void 0 ? void 0 : baseDate.getTime();
16
- const calendar = useMemo(() => {
17
- const startDate = rangeStartDate !== null && rangeStartDate !== void 0 ? rangeStartDate : rangeEndDate;
18
- const endDate = rangeEndDate !== null && rangeEndDate !== void 0 ? rangeEndDate : rangeStartDate;
19
- const selection = startDate && endDate ? [startDate, endDate] : null;
20
- return new MonthCalendar({ padDates, startOfWeek, baseDate, selection });
21
- },
22
- // eslint-disable-next-line react-hooks/exhaustive-deps
23
- [padDates, startOfWeek, baseDateTime, rangeStartDate, rangeEndDate]);
24
- return (React.createElement("table", { role: "grid", "aria-labelledby": ariaLabelledby, className: clsx(styles.grid, className) },
25
- React.createElement("thead", null,
26
- React.createElement("tr", null, calendar.weekdays.map(dayIndex => (React.createElement("th", { key: dayIndex, scope: "col", className: clsx(styles['grid-cell'], styles['day-header']) },
27
- React.createElement("span", { "aria-hidden": "true" }, renderDayName(locale, dayIndex, 'short')),
28
- React.createElement(ScreenreaderOnly, null, renderDayName(locale, dayIndex, 'long'))))))),
29
- React.createElement("tbody", { onKeyDown: onGridKeyDownHandler }, calendar.weeks.map(({ days, testIndex }, weekIndex) => {
30
- const isWeekBelongsToMonth = days.some(({ date }) => isSameMonth(date, baseDate));
31
- return (React.createElement("tr", { key: weekIndex, className: clsx(styles.week, isWeekBelongsToMonth && testStyles['calendar-week']), "data-awsui-weekindex": testIndex }, days.map(({ date, isVisible, isInRange, isSelectionTop, isSelectionBottom, isSelectionLeft, isSelectionRight }, dateIndex) => {
32
- const isStartDate = !!selectedStartDate && isSameDay(date, selectedStartDate);
33
- const isEndDate = !!selectedEndDate && isSameDay(date, selectedEndDate);
34
- const isSelected = isStartDate || isEndDate;
35
- const isFocused = !!focusedDate && isSameDay(date, focusedDate);
36
- const onlyOneSelected = !!rangeStartDate && !!rangeEndDate
37
- ? isSameDay(rangeStartDate, rangeEndDate)
38
- : !selectedStartDate || !selectedEndDate;
39
- const isDateBelongsToMonth = isSameMonth(date, baseDate);
40
- const isEnabled = (!isDateEnabled || isDateEnabled(date)) && isDateBelongsToMonth;
41
- const disabledReason = dateDisabledReason(date);
42
- const isDisabledWithReason = !isEnabled && !!disabledReason;
43
- const isFocusable = isFocused && (isEnabled || isDisabledWithReason);
44
- const baseClasses = {
45
- [styles.day]: true,
46
- [testStyles['calendar-date']]: isDateBelongsToMonth,
47
- [styles['grid-cell']]: true,
48
- [styles['in-first-row']]: weekIndex === 0,
49
- [styles['in-first-column']]: dateIndex === 0,
50
- };
51
- if (!isVisible) {
52
- return (React.createElement("td", { key: `${weekIndex}:${dateIndex}`, ref: isFocused ? focusedDateRef : undefined, className: clsx(baseClasses, {
53
- [styles['in-previous-month']]: isBefore(date, baseDate),
54
- [styles['last-day-of-month']]: isLastDayOfMonth(date),
55
- [styles['in-next-month']]: isAfter(date, baseDate),
56
- }) }));
57
- }
58
- const handlers = {};
59
- if (isEnabled) {
60
- handlers.onClick = () => onSelectDate(date);
61
- handlers.onFocus = () => onFocusedDateChange(date);
62
- }
63
- // Can't be focused.
64
- let tabIndex = undefined;
65
- if (isFocusable && (isEnabled || isDisabledWithReason)) {
66
- // Next focus target.
67
- tabIndex = 0;
68
- }
69
- else if (isEnabled || isDisabledWithReason) {
70
- // Can be focused programmatically.
71
- tabIndex = -1;
72
- }
73
- // Screen-reader announcement for the focused day.
74
- let dayAnnouncement = getDateLabel(locale, date, 'short');
75
- if (isToday(date)) {
76
- dayAnnouncement += '. ' + todayAriaLabel;
77
- }
78
- return (React.createElement(GridCell, Object.assign({ ref: isFocused ? focusedDateRef : undefined, key: `${weekIndex}:${dateIndex}`, className: clsx(baseClasses, {
79
- [styles['in-visible-calendar']]: true,
80
- [styles.enabled]: isEnabled,
81
- [styles.selected]: isSelected,
82
- [styles['start-date']]: isStartDate,
83
- [styles['end-date']]: isEndDate,
84
- [styles['no-range']]: isSelected && onlyOneSelected,
85
- [styles['in-range']]: isInRange,
86
- [styles['in-range-border-block-start']]: isSelectionTop,
87
- [styles['in-range-border-block-end']]: isSelectionBottom,
88
- [styles['in-range-border-inline-start']]: isSelectionLeft,
89
- [styles['in-range-border-inline-end']]: isSelectionRight,
90
- [styles.today]: isToday(date),
91
- }), "aria-selected": isEnabled ? isSelected || isInRange : undefined, "aria-current": isToday(date) ? 'date' : undefined, "data-date": formatDate(date), "aria-disabled": !isEnabled, tabIndex: tabIndex, disabledReason: isDisabledWithReason ? disabledReason : undefined }, handlers),
92
- React.createElement("span", { className: styles['day-inner'], "aria-hidden": "true" }, date.getDate()),
93
- React.createElement(ScreenreaderOnly, null, dayAnnouncement)));
94
- })));
95
- }))));
96
- }
97
- //# sourceMappingURL=monthly-grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monthly-grid.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/monthly-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport clsx from 'clsx';\nimport { isAfter, isBefore, isLastDayOfMonth, isSameDay, isSameMonth, isToday } from 'date-fns';\n\nimport { getDateLabel, renderDayName } from '../../../calendar/utils/intl';\nimport ScreenreaderOnly from '../../../internal/components/screenreader-only/index.js';\nimport { formatDate } from '../../../internal/utils/date-time';\nimport { MonthCalendar } from '../../../internal/utils/date-time/calendar';\nimport { DateRangePickerProps, DayIndex } from '../../interfaces';\nimport { GridCell } from './grid-cell';\n\nimport testStyles from '../../test-classes/styles.css.js';\nimport styles from './styles.css.js';\n\n/**\n * Calendar grid supports two mechanisms of keyboard navigation:\n * - Native screen-reader table navigation (semantic table markup);\n * - Keyboard arrow-keys navigation (a custom key-down handler).\n *\n * The implementation largely follows the w3 example (https://www.w3.org/WAI/ARIA/apg/example-index/dialog-modal/datepicker-dialog) and shares the following issues:\n * - (table navigation) Chrome+VO - weekday is announced twice when navigating to the calendar's header;\n * - (table navigation) Safari+VO - \"dimmed\" state is announced twice;\n * - (table navigation) Firefox/Chrome+NVDA - cannot use table navigation if any cell has a focus;\n * - (keyboard navigation) Firefox+NVDA - every day is announced as \"not selected\";\n * - (keyboard navigation) Safari/Chrome+VO - weekdays are not announced;\n * - (keyboard navigation) Safari/Chrome+VO - days are not announced as interactive (clickable or selectable);\n * - (keyboard navigation) Safari/Chrome+VO - day announcements are not interruptive and can be missed if navigating fast.\n */\n\ninterface GridProps {\n padDates: 'before' | 'after';\n baseDate: Date;\n selectedStartDate: Date | null;\n selectedEndDate: Date | null;\n\n rangeStartDate: Date | null;\n rangeEndDate: Date | null;\n\n focusedDate: Date | null;\n focusedDateRef: React.RefObject<HTMLTableCellElement>;\n\n onSelectDate: (date: Date) => void;\n onGridKeyDownHandler: (e: React.KeyboardEvent<HTMLElement>) => void;\n onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;\n\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n dateDisabledReason: DateRangePickerProps.DateDisabledReasonFunction;\n\n locale: string;\n startOfWeek: DayIndex;\n todayAriaLabel?: string;\n ariaLabelledby: string;\n\n className?: string;\n}\n\nexport function MonthlyGrid({\n padDates,\n baseDate,\n selectedStartDate,\n selectedEndDate,\n rangeStartDate,\n rangeEndDate,\n focusedDate,\n\n focusedDateRef,\n\n onSelectDate,\n onGridKeyDownHandler,\n onFocusedDateChange,\n\n isDateEnabled,\n dateDisabledReason,\n\n locale,\n startOfWeek,\n todayAriaLabel,\n ariaLabelledby,\n\n className,\n}: GridProps) {\n // `baseDateTime` is used as a more stable replacement for baseDate\n const baseDateTime = baseDate?.getTime();\n const calendar = useMemo(\n () => {\n const startDate = rangeStartDate ?? rangeEndDate;\n const endDate = rangeEndDate ?? rangeStartDate;\n const selection = startDate && endDate ? ([startDate, endDate] as [Date, Date]) : null;\n return new MonthCalendar({ padDates, startOfWeek, baseDate, selection });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [padDates, startOfWeek, baseDateTime, rangeStartDate, rangeEndDate]\n );\n return (\n <table role=\"grid\" aria-labelledby={ariaLabelledby} className={clsx(styles.grid, className)}>\n <thead>\n <tr>\n {calendar.weekdays.map(dayIndex => (\n <th key={dayIndex} scope=\"col\" className={clsx(styles['grid-cell'], styles['day-header'])}>\n <span aria-hidden=\"true\">{renderDayName(locale, dayIndex, 'short')}</span>\n <ScreenreaderOnly>{renderDayName(locale, dayIndex, 'long')}</ScreenreaderOnly>\n </th>\n ))}\n </tr>\n </thead>\n <tbody onKeyDown={onGridKeyDownHandler}>\n {calendar.weeks.map(({ days, testIndex }, weekIndex) => {\n const isWeekBelongsToMonth = days.some(({ date }) => isSameMonth(date, baseDate));\n return (\n <tr\n key={weekIndex}\n className={clsx(styles.week, isWeekBelongsToMonth && testStyles['calendar-week'])}\n data-awsui-weekindex={testIndex}\n >\n {days.map(\n (\n { date, isVisible, isInRange, isSelectionTop, isSelectionBottom, isSelectionLeft, isSelectionRight },\n dateIndex\n ) => {\n const isStartDate = !!selectedStartDate && isSameDay(date, selectedStartDate);\n const isEndDate = !!selectedEndDate && isSameDay(date, selectedEndDate);\n const isSelected = isStartDate || isEndDate;\n const isFocused = !!focusedDate && isSameDay(date, focusedDate);\n const onlyOneSelected =\n !!rangeStartDate && !!rangeEndDate\n ? isSameDay(rangeStartDate, rangeEndDate)\n : !selectedStartDate || !selectedEndDate;\n\n const isDateBelongsToMonth = isSameMonth(date, baseDate);\n const isEnabled = (!isDateEnabled || isDateEnabled(date)) && isDateBelongsToMonth;\n const disabledReason = dateDisabledReason(date);\n const isDisabledWithReason = !isEnabled && !!disabledReason;\n const isFocusable = isFocused && (isEnabled || isDisabledWithReason);\n\n const baseClasses = {\n [styles.day]: true,\n [testStyles['calendar-date']]: isDateBelongsToMonth,\n [styles['grid-cell']]: true,\n [styles['in-first-row']]: weekIndex === 0,\n [styles['in-first-column']]: dateIndex === 0,\n };\n\n if (!isVisible) {\n return (\n <td\n key={`${weekIndex}:${dateIndex}`}\n ref={isFocused ? focusedDateRef : undefined}\n className={clsx(baseClasses, {\n [styles['in-previous-month']]: isBefore(date, baseDate),\n [styles['last-day-of-month']]: isLastDayOfMonth(date),\n [styles['in-next-month']]: isAfter(date, baseDate),\n })}\n ></td>\n );\n }\n\n const handlers: React.HTMLAttributes<HTMLDivElement> = {};\n if (isEnabled) {\n handlers.onClick = () => onSelectDate(date);\n handlers.onFocus = () => onFocusedDateChange(date);\n }\n\n // Can't be focused.\n let tabIndex = undefined;\n if (isFocusable && (isEnabled || isDisabledWithReason)) {\n // Next focus target.\n tabIndex = 0;\n } else if (isEnabled || isDisabledWithReason) {\n // Can be focused programmatically.\n tabIndex = -1;\n }\n\n // Screen-reader announcement for the focused day.\n let dayAnnouncement = getDateLabel(locale, date, 'short');\n if (isToday(date)) {\n dayAnnouncement += '. ' + todayAriaLabel;\n }\n\n return (\n <GridCell\n ref={isFocused ? focusedDateRef : undefined}\n key={`${weekIndex}:${dateIndex}`}\n className={clsx(baseClasses, {\n [styles['in-visible-calendar']]: true,\n [styles.enabled]: isEnabled,\n [styles.selected]: isSelected,\n [styles['start-date']]: isStartDate,\n [styles['end-date']]: isEndDate,\n [styles['no-range']]: isSelected && onlyOneSelected,\n [styles['in-range']]: isInRange,\n [styles['in-range-border-block-start']]: isSelectionTop,\n [styles['in-range-border-block-end']]: isSelectionBottom,\n [styles['in-range-border-inline-start']]: isSelectionLeft,\n [styles['in-range-border-inline-end']]: isSelectionRight,\n [styles.today]: isToday(date),\n })}\n aria-selected={isEnabled ? isSelected || isInRange : undefined}\n aria-current={isToday(date) ? 'date' : undefined}\n data-date={formatDate(date)}\n aria-disabled={!isEnabled}\n tabIndex={tabIndex}\n disabledReason={isDisabledWithReason ? disabledReason : undefined}\n {...handlers}\n >\n <span className={styles['day-inner']} aria-hidden=\"true\">\n {date.getDate()}\n </span>\n <ScreenreaderOnly>{dayAnnouncement}</ScreenreaderOnly>\n </GridCell>\n );\n }\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n"]}