@cloudscape-design/components 3.0.126 → 3.0.127

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 (198) hide show
  1. package/annotation-context/annotation/annotation-popover.d.ts.map +1 -1
  2. package/annotation-context/annotation/annotation-popover.js +8 -2
  3. package/annotation-context/annotation/annotation-popover.js.map +1 -1
  4. package/annotation-context/annotation/annotation-trigger.d.ts +2 -0
  5. package/annotation-context/annotation/annotation-trigger.d.ts.map +1 -1
  6. package/annotation-context/annotation/annotation-trigger.js +2 -2
  7. package/annotation-context/annotation/annotation-trigger.js.map +1 -1
  8. package/annotation-context/annotation/closed-annotation.d.ts +3 -1
  9. package/annotation-context/annotation/closed-annotation.d.ts.map +1 -1
  10. package/annotation-context/annotation/closed-annotation.js +2 -2
  11. package/annotation-context/annotation/closed-annotation.js.map +1 -1
  12. package/annotation-context/annotation/open-annotation.d.ts.map +1 -1
  13. package/annotation-context/annotation/open-annotation.js +1 -1
  14. package/annotation-context/annotation/open-annotation.js.map +1 -1
  15. package/annotation-context/annotation/styles.css.js +24 -24
  16. package/annotation-context/annotation/styles.scoped.css +30 -30
  17. package/annotation-context/annotation/styles.selectors.js +24 -24
  18. package/annotation-context/index.d.ts.map +1 -1
  19. package/annotation-context/index.js +3 -1
  20. package/annotation-context/index.js.map +1 -1
  21. package/annotation-context/interfaces.d.ts +1 -1
  22. package/annotation-context/interfaces.d.ts.map +1 -1
  23. package/annotation-context/interfaces.js.map +1 -1
  24. package/app-layout/visual-refresh/main.d.ts.map +1 -1
  25. package/app-layout/visual-refresh/main.js +8 -3
  26. package/app-layout/visual-refresh/main.js.map +1 -1
  27. package/app-layout/visual-refresh/styles.css.js +60 -60
  28. package/app-layout/visual-refresh/styles.scoped.css +255 -237
  29. package/app-layout/visual-refresh/styles.selectors.js +60 -60
  30. package/area-chart/internal.d.ts.map +1 -1
  31. package/area-chart/internal.js +5 -0
  32. package/area-chart/internal.js.map +1 -1
  33. package/area-chart/model/index.d.ts +1 -0
  34. package/area-chart/model/index.d.ts.map +1 -1
  35. package/area-chart/model/index.js.map +1 -1
  36. package/area-chart/model/use-chart-model.d.ts.map +1 -1
  37. package/area-chart/model/use-chart-model.js +8 -1
  38. package/area-chart/model/use-chart-model.js.map +1 -1
  39. package/attribute-editor/row.d.ts.map +1 -1
  40. package/attribute-editor/row.js +4 -3
  41. package/attribute-editor/row.js.map +1 -1
  42. package/attribute-editor/styles.css.js +13 -12
  43. package/attribute-editor/styles.scoped.css +27 -23
  44. package/attribute-editor/styles.selectors.js +13 -12
  45. package/breadcrumb-group/interfaces.d.ts +1 -0
  46. package/breadcrumb-group/interfaces.d.ts.map +1 -1
  47. package/breadcrumb-group/interfaces.js.map +1 -1
  48. package/breadcrumb-group/internal.d.ts.map +1 -1
  49. package/breadcrumb-group/internal.js +1 -1
  50. package/breadcrumb-group/internal.js.map +1 -1
  51. package/breadcrumb-group/item/item.d.ts +1 -1
  52. package/breadcrumb-group/item/item.d.ts.map +1 -1
  53. package/breadcrumb-group/item/item.js +68 -8
  54. package/breadcrumb-group/item/item.js.map +1 -1
  55. package/breadcrumb-group/item/styles.css.js +9 -7
  56. package/breadcrumb-group/item/styles.scoped.css +26 -16
  57. package/breadcrumb-group/item/styles.selectors.js +9 -7
  58. package/code-editor/index.d.ts.map +1 -1
  59. package/code-editor/index.js +11 -16
  60. package/code-editor/index.js.map +1 -1
  61. package/code-editor/interfaces.d.ts +12 -1
  62. package/code-editor/interfaces.d.ts.map +1 -1
  63. package/code-editor/interfaces.js.map +1 -1
  64. package/code-editor/status-bar.d.ts.map +1 -1
  65. package/code-editor/status-bar.js +7 -1
  66. package/code-editor/status-bar.js.map +1 -1
  67. package/code-editor/util.js +1 -1
  68. package/code-editor/util.js.map +1 -1
  69. package/container/internal.d.ts.map +1 -1
  70. package/container/internal.js +7 -4
  71. package/container/internal.js.map +1 -1
  72. package/date-range-picker/calendar/grids/index.d.ts +0 -1
  73. package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  74. package/date-range-picker/calendar/grids/index.js +2 -14
  75. package/date-range-picker/calendar/grids/index.js.map +1 -1
  76. package/date-range-picker/calendar/index.d.ts +6 -4
  77. package/date-range-picker/calendar/index.d.ts.map +1 -1
  78. package/date-range-picker/calendar/index.js +111 -123
  79. package/date-range-picker/calendar/index.js.map +1 -1
  80. package/date-range-picker/calendar/utils.d.ts +4 -0
  81. package/date-range-picker/calendar/utils.d.ts.map +1 -0
  82. package/date-range-picker/calendar/utils.js +31 -0
  83. package/date-range-picker/calendar/utils.js.map +1 -0
  84. package/date-range-picker/dropdown.d.ts +2 -1
  85. package/date-range-picker/dropdown.d.ts.map +1 -1
  86. package/date-range-picker/dropdown.js +8 -6
  87. package/date-range-picker/dropdown.js.map +1 -1
  88. package/date-range-picker/index.d.ts.map +1 -1
  89. package/date-range-picker/index.js +2 -2
  90. package/date-range-picker/index.js.map +1 -1
  91. package/date-range-picker/interfaces.d.ts +14 -4
  92. package/date-range-picker/interfaces.d.ts.map +1 -1
  93. package/date-range-picker/interfaces.js.map +1 -1
  94. package/date-range-picker/styles.css.js +38 -38
  95. package/date-range-picker/styles.scoped.css +45 -50
  96. package/date-range-picker/styles.selectors.js +38 -38
  97. package/date-range-picker/utils.d.ts +2 -8
  98. package/date-range-picker/utils.d.ts.map +1 -1
  99. package/date-range-picker/utils.js +17 -12
  100. package/date-range-picker/utils.js.map +1 -1
  101. package/flashbar/styles.css.js +33 -33
  102. package/flashbar/styles.scoped.css +121 -121
  103. package/flashbar/styles.selectors.js +33 -33
  104. package/internal/components/dropdown/index.d.ts.map +1 -1
  105. package/internal/components/dropdown/index.js +2 -9
  106. package/internal/components/dropdown/index.js.map +1 -1
  107. package/internal/components/dropdown-status/index.d.ts +1 -4
  108. package/internal/components/dropdown-status/index.d.ts.map +1 -1
  109. package/internal/components/dropdown-status/index.js +3 -5
  110. package/internal/components/dropdown-status/index.js.map +1 -1
  111. package/internal/components/filtering-token/index.d.ts +2 -1
  112. package/internal/components/filtering-token/index.d.ts.map +1 -1
  113. package/internal/components/filtering-token/index.js +2 -2
  114. package/internal/components/filtering-token/index.js.map +1 -1
  115. package/internal/components/option/index.js +4 -4
  116. package/internal/components/option/index.js.map +1 -1
  117. package/internal/environment.js +1 -1
  118. package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  119. package/internal/generated/custom-css-properties/index.js +27 -26
  120. package/internal/generated/custom-css-properties/index.js.map +1 -1
  121. package/internal/hooks/use-analytics/index.d.ts +2 -0
  122. package/internal/hooks/use-analytics/index.d.ts.map +1 -0
  123. package/internal/hooks/use-analytics/index.js +16 -0
  124. package/internal/hooks/use-analytics/index.js.map +1 -0
  125. package/internal/manifest.json +1 -1
  126. package/internal/utils/date-time/format-date-time.d.ts +2 -0
  127. package/internal/utils/date-time/format-date-time.d.ts.map +1 -0
  128. package/internal/utils/date-time/format-date-time.js +8 -0
  129. package/internal/utils/date-time/format-date-time.js.map +1 -0
  130. package/internal/utils/date-time/index.d.ts +2 -1
  131. package/internal/utils/date-time/index.d.ts.map +1 -1
  132. package/internal/utils/date-time/index.js +2 -1
  133. package/internal/utils/date-time/index.js.map +1 -1
  134. package/internal/utils/date-time/join-date-time.d.ts +4 -0
  135. package/internal/utils/date-time/join-date-time.d.ts.map +1 -1
  136. package/internal/utils/date-time/join-date-time.js +4 -0
  137. package/internal/utils/date-time/join-date-time.js.map +1 -1
  138. package/mixed-line-bar-chart/chart-container.d.ts.map +1 -1
  139. package/mixed-line-bar-chart/chart-container.js +14 -5
  140. package/mixed-line-bar-chart/chart-container.js.map +1 -1
  141. package/package.json +1 -1
  142. package/pie-chart/pie-chart.d.ts.map +1 -1
  143. package/pie-chart/pie-chart.js +10 -1
  144. package/pie-chart/pie-chart.js.map +1 -1
  145. package/popover/body.d.ts +2 -1
  146. package/popover/body.d.ts.map +1 -1
  147. package/popover/body.js +2 -2
  148. package/popover/body.js.map +1 -1
  149. package/property-filter/interfaces.d.ts +1 -0
  150. package/property-filter/interfaces.d.ts.map +1 -1
  151. package/property-filter/interfaces.js.map +1 -1
  152. package/property-filter/token.d.ts.map +1 -1
  153. package/property-filter/token.js +1 -1
  154. package/property-filter/token.js.map +1 -1
  155. package/select/parts/filter.d.ts +1 -1
  156. package/select/utils/use-select.d.ts +1 -7
  157. package/select/utils/use-select.d.ts.map +1 -1
  158. package/select/utils/use-select.js +1 -1
  159. package/select/utils/use-select.js.map +1 -1
  160. package/table/styles.css.js +34 -34
  161. package/table/styles.scoped.css +42 -40
  162. package/table/styles.selectors.js +34 -34
  163. package/tabs/index.d.ts.map +1 -1
  164. package/tabs/index.js +9 -11
  165. package/tabs/index.js.map +1 -1
  166. package/tabs/styles.css.js +21 -21
  167. package/tabs/styles.scoped.css +48 -41
  168. package/tabs/styles.selectors.js +21 -21
  169. package/tabs/tab-header-bar.d.ts +4 -0
  170. package/tabs/tab-header-bar.d.ts.map +1 -1
  171. package/tabs/tab-header-bar.js +5 -1
  172. package/tabs/tab-header-bar.js.map +1 -1
  173. package/tag-editor/internal.d.ts.map +1 -1
  174. package/tag-editor/internal.js +6 -7
  175. package/tag-editor/internal.js.map +1 -1
  176. package/test-utils/tsconfig.tsbuildinfo +1 -1
  177. package/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
  178. package/tutorial-panel/components/tutorial-detail-view/index.js +3 -1
  179. package/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
  180. package/tutorial-panel/components/tutorial-detail-view/task.d.ts.map +1 -1
  181. package/tutorial-panel/components/tutorial-detail-view/task.js +2 -1
  182. package/tutorial-panel/components/tutorial-detail-view/task.js.map +1 -1
  183. package/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
  184. package/tutorial-panel/components/tutorial-list/index.js +2 -2
  185. package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  186. package/tutorial-panel/interfaces.d.ts +2 -0
  187. package/tutorial-panel/interfaces.d.ts.map +1 -1
  188. package/tutorial-panel/interfaces.js.map +1 -1
  189. package/wizard/index.d.ts.map +1 -1
  190. package/wizard/index.js +9 -5
  191. package/wizard/index.js.map +1 -1
  192. package/wizard/wizard-form.d.ts.map +1 -1
  193. package/wizard/wizard-form.js +7 -2
  194. package/wizard/wizard-form.js.map +1 -1
  195. package/date-range-picker/calendar/use-date-time.d.ts +0 -9
  196. package/date-range-picker/calendar/use-date-time.d.ts.map +0 -1
  197. package/date-range-picker/calendar/use-date-time.js +0 -16
  198. package/date-range-picker/calendar/use-date-time.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/index.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, { useEffect, useRef, useState } from 'react';\nimport { KeyCode } from '../../../internal/keycode';\nimport { isSameMonth, isAfter, isBefore, addMonths, min, max } from 'date-fns';\n\nimport { DateRangePickerProps, DayIndex } from '../../interfaces';\nimport InternalSpaceBetween from '../../../space-between/internal';\nimport { Grid } from './grid';\nimport styles from '../../styles.css.js';\n\nimport useFocusVisible from '../../../internal/hooks/focus-visible/index';\nimport { hasValue } from '../../../internal/utils/has-value';\nimport { useDateCache } from '../../../internal/hooks/use-date-cache';\nimport { moveNextDay, movePrevDay, moveNextWeek, movePrevWeek, getBaseDate } from '../../../calendar/utils/navigation';\n\nfunction isVisible(date: Date, baseDate: Date, isSingleGrid: boolean) {\n if (isSingleGrid) {\n return isSameMonth(date, baseDate);\n }\n\n const previousMonth = addMonths(baseDate, -1);\n\n return isSameMonth(date, previousMonth) || isSameMonth(date, baseDate);\n}\n\nexport interface GridProps {\n baseDate: Date;\n selectedStartDate: Date | null;\n selectedEndDate: Date | null;\n\n focusedDate: Date | null;\n onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;\n\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n isSingleGrid: boolean;\n\n onSelectDate: (date: Date) => void;\n onChangeMonth: (date: Date) => void;\n\n locale: string;\n startOfWeek: DayIndex;\n todayAriaLabel: string;\n headingIdPrefix: string;\n}\n\nexport function selectFocusedDate(\n selected: Date | null,\n baseDate: Date,\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction\n) {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n}\n\nexport const Grids = ({\n baseDate,\n selectedStartDate,\n selectedEndDate,\n\n focusedDate,\n onFocusedDateChange,\n\n isDateEnabled,\n isSingleGrid,\n\n onSelectDate,\n onChangeMonth,\n\n locale,\n startOfWeek,\n todayAriaLabel,\n headingIdPrefix,\n}: GridProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [gridHasFocus, setGridHasFocus] = useState(false);\n\n const focusedDateRef = useRef<HTMLTableCellElement>(null);\n\n const dateCache = useDateCache();\n baseDate = dateCache(baseDate);\n focusedDate = focusedDate ? dateCache(focusedDate) : null;\n\n useEffect(() => {\n if (focusedDate && !isVisible(focusedDate, baseDate, isSingleGrid)) {\n const direction = isAfter(focusedDate, baseDate) ? -1 : 1;\n\n const newMonth = !isSingleGrid && direction === -1 ? addMonths(baseDate, -1) : baseDate;\n const nearestBaseDate = getBaseDate(newMonth, isDateEnabled);\n\n const newFocusedDate = selectFocusedDate(focusedDate, nearestBaseDate, isDateEnabled);\n\n onFocusedDateChange(newFocusedDate);\n }\n }, [baseDate, focusedDate, isSingleGrid, isDateEnabled, onFocusedDateChange]);\n\n const onGridKeyDownHandler = (e: React.KeyboardEvent) => {\n let updatedFocusDate;\n\n if (focusedDate === null) {\n return;\n }\n\n switch (e.keyCode) {\n case KeyCode.space:\n case KeyCode.enter:\n e.preventDefault();\n if (focusedDate) {\n onSelectDate(focusedDate);\n }\n return;\n case KeyCode.right:\n e.preventDefault();\n updatedFocusDate = moveNextDay(focusedDate, isDateEnabled);\n break;\n case KeyCode.left:\n e.preventDefault();\n updatedFocusDate = movePrevDay(focusedDate, isDateEnabled);\n break;\n case KeyCode.up:\n e.preventDefault();\n updatedFocusDate = movePrevWeek(focusedDate, isDateEnabled);\n break;\n case KeyCode.down:\n e.preventDefault();\n updatedFocusDate = moveNextWeek(focusedDate, isDateEnabled);\n break;\n default:\n return;\n }\n\n const updatedDateIsVisible = isVisible(updatedFocusDate, baseDate, isSingleGrid);\n\n if (!updatedDateIsVisible) {\n const newMonthIsOnLeftSide = !isSingleGrid && isBefore(updatedFocusDate, baseDate);\n\n onChangeMonth(newMonthIsOnLeftSide ? addMonths(updatedFocusDate, 1) : updatedFocusDate);\n }\n onFocusedDateChange(updatedFocusDate);\n };\n\n useEffect(() => {\n // focus current date if the focus is already inside the calendar\n if (focusedDate !== null && gridHasFocus) {\n if (focusedDateRef.current && focusedDateRef.current !== document.activeElement) {\n focusedDateRef.current.focus();\n }\n }\n }, [focusedDate, gridHasFocus]);\n\n const onGridBlur = (event: React.FocusEvent) => {\n /*\n IE11 does not support event.relatedTarget, but sets document.activeElement to the newly\n focused element before the onBlur handler is called.\n\n However, other browsers do not make any guarantees for the value of document.activeElement\n during the execution of an onBlur handler. Therefore, we have to use event.relatedTarget\n instead.\n */\n const newFocusTarget = event.relatedTarget || document.activeElement;\n const newFocusTargetIsInGrid = containerRef.current?.contains(newFocusTarget as Node);\n if (newFocusTarget && !newFocusTargetIsInGrid && gridHasFocus) {\n setGridHasFocus(false);\n }\n };\n\n const onGridFocus = () => {\n if (!gridHasFocus) {\n setGridHasFocus(true);\n }\n };\n\n const focusVisible = useFocusVisible();\n\n const isRangeVisible =\n (selectedStartDate && selectedEndDate) || (gridHasFocus && !!focusVisible['data-awsui-focus-visible']);\n\n const rangeEnds: Date[] = [selectedStartDate ?? focusedDate, selectedEndDate ?? focusedDate].filter(hasValue);\n\n const rangeStartDate = min(rangeEnds);\n const rangeEndDate = max(rangeEnds);\n\n return (\n <div ref={containerRef} onFocus={onGridFocus} onBlur={onGridBlur}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n {!isSingleGrid && (\n <Grid\n className={styles['first-grid']}\n baseDate={addMonths(baseDate, -1)}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n rangeStartDate={isRangeVisible ? rangeStartDate : null}\n rangeEndDate={isRangeVisible ? rangeEndDate : null}\n focusedDate={focusedDate}\n focusedDateRef={focusedDateRef}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDate}\n onGridKeyDownHandler={onGridKeyDownHandler}\n onFocusedDateChange={onFocusedDateChange}\n locale={locale}\n startOfWeek={startOfWeek}\n todayAriaLabel={todayAriaLabel}\n ariaLabelledby={`${headingIdPrefix}-prevmonth`}\n />\n )}\n <Grid\n className={styles['second-grid']}\n baseDate={baseDate}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n rangeStartDate={isRangeVisible ? rangeStartDate : null}\n rangeEndDate={isRangeVisible ? rangeEndDate : null}\n focusedDate={focusedDate}\n focusedDateRef={focusedDateRef}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDate}\n onGridKeyDownHandler={onGridKeyDownHandler}\n onFocusedDateChange={onFocusedDateChange}\n locale={locale}\n startOfWeek={startOfWeek}\n todayAriaLabel={todayAriaLabel}\n ariaLabelledby={`${headingIdPrefix}-currentmonth`}\n />\n </InternalSpaceBetween>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/index.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, { useEffect, useRef, useState } from 'react';\nimport { KeyCode } from '../../../internal/keycode';\nimport { isSameMonth, isAfter, isBefore, addMonths, min, max } from 'date-fns';\n\nimport { DateRangePickerProps, DayIndex } from '../../interfaces';\nimport InternalSpaceBetween from '../../../space-between/internal';\nimport { Grid } from './grid';\nimport styles from '../../styles.css.js';\n\nimport useFocusVisible from '../../../internal/hooks/focus-visible/index';\nimport { hasValue } from '../../../internal/utils/has-value';\nimport { useDateCache } from '../../../internal/hooks/use-date-cache';\nimport { moveNextDay, movePrevDay, moveNextWeek, movePrevWeek, getBaseDate } from '../../../calendar/utils/navigation';\nimport { findDateToFocus } from '../utils';\n\nfunction isVisible(date: Date, baseDate: Date, isSingleGrid: boolean) {\n if (isSingleGrid) {\n return isSameMonth(date, baseDate);\n }\n\n const previousMonth = addMonths(baseDate, -1);\n\n return isSameMonth(date, previousMonth) || isSameMonth(date, baseDate);\n}\n\nexport interface GridProps {\n baseDate: Date;\n selectedStartDate: Date | null;\n selectedEndDate: Date | null;\n\n focusedDate: Date | null;\n onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;\n\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n isSingleGrid: boolean;\n\n onSelectDate: (date: Date) => void;\n onChangeMonth: (date: Date) => void;\n\n locale: string;\n startOfWeek: DayIndex;\n todayAriaLabel: string;\n headingIdPrefix: string;\n}\n\nexport const Grids = ({\n baseDate,\n selectedStartDate,\n selectedEndDate,\n\n focusedDate,\n onFocusedDateChange,\n\n isDateEnabled,\n isSingleGrid,\n\n onSelectDate,\n onChangeMonth,\n\n locale,\n startOfWeek,\n todayAriaLabel,\n headingIdPrefix,\n}: GridProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [gridHasFocus, setGridHasFocus] = useState(false);\n\n const focusedDateRef = useRef<HTMLTableCellElement>(null);\n\n const dateCache = useDateCache();\n baseDate = dateCache(baseDate);\n focusedDate = focusedDate ? dateCache(focusedDate) : null;\n\n useEffect(() => {\n if (focusedDate && !isVisible(focusedDate, baseDate, isSingleGrid)) {\n const direction = isAfter(focusedDate, baseDate) ? -1 : 1;\n\n const newMonth = !isSingleGrid && direction === -1 ? addMonths(baseDate, -1) : baseDate;\n const nearestBaseDate = getBaseDate(newMonth, isDateEnabled);\n\n const newFocusedDate = findDateToFocus(focusedDate, nearestBaseDate, isDateEnabled);\n\n onFocusedDateChange(newFocusedDate);\n }\n }, [baseDate, focusedDate, isSingleGrid, isDateEnabled, onFocusedDateChange]);\n\n const onGridKeyDownHandler = (e: React.KeyboardEvent) => {\n let updatedFocusDate;\n\n if (focusedDate === null) {\n return;\n }\n\n switch (e.keyCode) {\n case KeyCode.space:\n case KeyCode.enter:\n e.preventDefault();\n if (focusedDate) {\n onSelectDate(focusedDate);\n }\n return;\n case KeyCode.right:\n e.preventDefault();\n updatedFocusDate = moveNextDay(focusedDate, isDateEnabled);\n break;\n case KeyCode.left:\n e.preventDefault();\n updatedFocusDate = movePrevDay(focusedDate, isDateEnabled);\n break;\n case KeyCode.up:\n e.preventDefault();\n updatedFocusDate = movePrevWeek(focusedDate, isDateEnabled);\n break;\n case KeyCode.down:\n e.preventDefault();\n updatedFocusDate = moveNextWeek(focusedDate, isDateEnabled);\n break;\n default:\n return;\n }\n\n const updatedDateIsVisible = isVisible(updatedFocusDate, baseDate, isSingleGrid);\n\n if (!updatedDateIsVisible) {\n const newMonthIsOnLeftSide = !isSingleGrid && isBefore(updatedFocusDate, baseDate);\n\n onChangeMonth(newMonthIsOnLeftSide ? addMonths(updatedFocusDate, 1) : updatedFocusDate);\n }\n onFocusedDateChange(updatedFocusDate);\n };\n\n useEffect(() => {\n // focus current date if the focus is already inside the calendar\n if (focusedDate !== null && gridHasFocus) {\n if (focusedDateRef.current && focusedDateRef.current !== document.activeElement) {\n focusedDateRef.current.focus();\n }\n }\n }, [focusedDate, gridHasFocus]);\n\n const onGridBlur = (event: React.FocusEvent) => {\n /*\n IE11 does not support event.relatedTarget, but sets document.activeElement to the newly\n focused element before the onBlur handler is called.\n\n However, other browsers do not make any guarantees for the value of document.activeElement\n during the execution of an onBlur handler. Therefore, we have to use event.relatedTarget\n instead.\n */\n const newFocusTarget = event.relatedTarget || document.activeElement;\n const newFocusTargetIsInGrid = containerRef.current?.contains(newFocusTarget as Node);\n if (newFocusTarget && !newFocusTargetIsInGrid && gridHasFocus) {\n setGridHasFocus(false);\n }\n };\n\n const onGridFocus = () => {\n if (!gridHasFocus) {\n setGridHasFocus(true);\n }\n };\n\n const focusVisible = useFocusVisible();\n\n const isRangeVisible =\n (selectedStartDate && selectedEndDate) || (gridHasFocus && !!focusVisible['data-awsui-focus-visible']);\n\n const rangeEnds: Date[] = [selectedStartDate ?? focusedDate, selectedEndDate ?? focusedDate].filter(hasValue);\n\n const rangeStartDate = min(rangeEnds);\n const rangeEndDate = max(rangeEnds);\n\n return (\n <div ref={containerRef} onFocus={onGridFocus} onBlur={onGridBlur}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n {!isSingleGrid && (\n <Grid\n className={styles['first-grid']}\n baseDate={addMonths(baseDate, -1)}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n rangeStartDate={isRangeVisible ? rangeStartDate : null}\n rangeEndDate={isRangeVisible ? rangeEndDate : null}\n focusedDate={focusedDate}\n focusedDateRef={focusedDateRef}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDate}\n onGridKeyDownHandler={onGridKeyDownHandler}\n onFocusedDateChange={onFocusedDateChange}\n locale={locale}\n startOfWeek={startOfWeek}\n todayAriaLabel={todayAriaLabel}\n ariaLabelledby={`${headingIdPrefix}-prevmonth`}\n />\n )}\n <Grid\n className={styles['second-grid']}\n baseDate={baseDate}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n rangeStartDate={isRangeVisible ? rangeStartDate : null}\n rangeEndDate={isRangeVisible ? rangeEndDate : null}\n focusedDate={focusedDate}\n focusedDateRef={focusedDateRef}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDate}\n onGridKeyDownHandler={onGridKeyDownHandler}\n onFocusedDateChange={onFocusedDateChange}\n locale={locale}\n startOfWeek={startOfWeek}\n todayAriaLabel={todayAriaLabel}\n ariaLabelledby={`${headingIdPrefix}-currentmonth`}\n />\n </InternalSpaceBetween>\n </div>\n );\n};\n"]}
@@ -1,15 +1,17 @@
1
+ import React from 'react';
1
2
  import { BaseComponentProps } from '../../internal/base-component';
2
- import { RangeCalendarI18nStrings, RangeCalendarValue } from '../interfaces';
3
+ import { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';
3
4
  import { TimeInputProps } from '../../time-input/interfaces';
4
5
  export interface DateRangePickerCalendarProps extends BaseComponentProps {
5
- value: null | RangeCalendarValue;
6
- onChange: (value: RangeCalendarValue) => void;
6
+ value: DateRangePickerProps.PendingAbsoluteValue;
7
+ setValue: React.Dispatch<React.SetStateAction<DateRangePickerProps.PendingAbsoluteValue>>;
7
8
  locale?: string;
8
9
  startOfWeek?: number;
9
10
  isDateEnabled?: (date: Date) => boolean;
10
11
  i18nStrings: RangeCalendarI18nStrings;
11
12
  dateOnly?: boolean;
12
13
  timeInputFormat?: TimeInputProps.Format;
14
+ customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;
13
15
  }
14
- export default function DateRangePickerCalendar({ value, onChange, locale, startOfWeek, isDateEnabled, i18nStrings, dateOnly, timeInputFormat, }: DateRangePickerCalendarProps): JSX.Element;
16
+ export default function DateRangePickerCalendar({ value, setValue, locale, startOfWeek, isDateEnabled, i18nStrings, dateOnly, timeInputFormat, customAbsoluteRangeControl, }: DateRangePickerCalendarProps): JSX.Element;
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAY7D,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,KAAK,EAAE,IAAI,GAAG,kBAAkB,CAAC;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,WAAW,EAAE,wBAAwB,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,KAAK,EACL,QAAQ,EACR,MAAW,EACX,WAAW,EACX,aAA0B,EAC1B,WAAW,EACX,QAAgB,EAChB,eAA4B,GAC7B,EAAE,4BAA4B,eA4O9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAY7D,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,CAAC;IACjD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,WAAW,EAAE,wBAAwB,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACxC,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;CACnF;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,KAAK,EACL,QAAQ,EACR,MAAW,EACX,WAAW,EACX,aAA0B,EAC1B,WAAW,EACX,QAAgB,EAChB,eAA4B,EAC5B,0BAA0B,GAC3B,EAAE,4BAA4B,eA0N9B"}
@@ -1,153 +1,136 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import React, { useEffect, useState } from 'react';
4
- import { addMonths, endOfDay, isBefore, startOfDay, startOfMonth, isAfter, isSameMonth } from 'date-fns';
3
+ import { __assign } from "tslib";
4
+ import React, { useState } from 'react';
5
+ import { addMonths, endOfDay, isAfter, isBefore, isSameMonth, startOfDay, startOfMonth } from 'date-fns';
5
6
  import styles from '../styles.css.js';
7
+ import SpaceBetween from '../../space-between/internal';
6
8
  import CalendarHeader from './header';
7
- import { Grids, selectFocusedDate } from './grids';
9
+ import { Grids } from './grids';
8
10
  import clsx from 'clsx';
9
11
  import { useUniqueId } from '../../internal/hooks/use-unique-id';
10
12
  import { getDateLabel, renderTimeLabel } from '../../calendar/utils/intl';
11
13
  import LiveRegion from '../../internal/components/live-region';
12
14
  import { normalizeLocale, normalizeStartOfWeek } from '../../internal/utils/locale';
13
- import { joinDateTime, parseDate } from '../../internal/utils/date-time';
15
+ import { parseDate, splitDateTime, formatDateTime } from '../../internal/utils/date-time';
14
16
  import { getBaseDate } from '../../calendar/utils/navigation';
15
17
  import { useMobile } from '../../internal/hooks/use-mobile/index.js';
16
18
  import RangeInputs from './range-inputs.js';
17
- import { useDateTime } from './use-date-time.js';
19
+ import { findDateToFocus, findMonthToDisplay } from './utils';
18
20
  export default function DateRangePickerCalendar(_a) {
19
21
  var _b, _c;
20
- var _d, _e;
21
- var value = _a.value, onChange = _a.onChange, _f = _a.locale, locale = _f === void 0 ? '' : _f, startOfWeek = _a.startOfWeek, _g = _a.isDateEnabled, isDateEnabled = _g === void 0 ? function () { return true; } : _g, i18nStrings = _a.i18nStrings, _h = _a.dateOnly, dateOnly = _h === void 0 ? false : _h, _j = _a.timeInputFormat, timeInputFormat = _j === void 0 ? 'hh:mm:ss' : _j;
22
+ var value = _a.value, setValue = _a.setValue, _d = _a.locale, locale = _d === void 0 ? '' : _d, startOfWeek = _a.startOfWeek, _e = _a.isDateEnabled, isDateEnabled = _e === void 0 ? function () { return true; } : _e, i18nStrings = _a.i18nStrings, _f = _a.dateOnly, dateOnly = _f === void 0 ? false : _f, _g = _a.timeInputFormat, timeInputFormat = _g === void 0 ? 'hh:mm:ss' : _g, customAbsoluteRangeControl = _a.customAbsoluteRangeControl;
22
23
  var isSingleGrid = useMobile();
23
24
  var normalizedLocale = normalizeLocale('DateRangePicker', locale);
24
25
  var normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);
25
- var initialStartDate = (_d = value === null || value === void 0 ? void 0 : value.startDate) !== null && _d !== void 0 ? _d : '';
26
- var rangeStart = useDateTime(initialStartDate);
27
- var initialEndDate = (_e = value === null || value === void 0 ? void 0 : value.endDate) !== null && _e !== void 0 ? _e : '';
28
- var rangeEnd = useDateTime(initialEndDate);
29
- var _k = useState(''), announcement = _k[0], setAnnouncement = _k[1];
30
- var _l = useState(function () {
31
- if (rangeStart.dateString) {
32
- var startDate = parseDate(rangeStart.dateString);
33
- if (isSingleGrid) {
34
- return startOfMonth(startDate);
26
+ var _h = useState(''), announcement = _h[0], setAnnouncement = _h[1];
27
+ var _j = useState(function () { return findMonthToDisplay(value, isSingleGrid); }), currentMonth = _j[0], setCurrentMonth = _j[1];
28
+ var _k = useState(function () {
29
+ if (value.start.date) {
30
+ var startDate = parseDate(value.start.date);
31
+ if (isSameMonth(startDate, currentMonth)) {
32
+ return startDate;
35
33
  }
36
- return startOfMonth(addMonths(startDate, 1));
37
- }
38
- if (rangeEnd.dateString) {
39
- return startOfMonth(parseDate(rangeEnd.dateString));
40
- }
41
- return startOfMonth(Date.now());
42
- }), currentMonth = _l[0], setCurrentMonth = _l[1];
43
- var _m = useState(function () {
44
- if (rangeStart.date) {
45
- if (isSameMonth(rangeStart.date, currentMonth)) {
46
- return rangeStart.date;
47
- }
48
- if (!isSingleGrid && isSameMonth(rangeStart.date, addMonths(currentMonth, -1))) {
49
- return rangeStart.date;
34
+ if (!isSingleGrid && isSameMonth(startDate, addMonths(currentMonth, -1))) {
35
+ return startDate;
50
36
  }
51
37
  }
52
- return selectFocusedDate(rangeStart.date, currentMonth, isDateEnabled);
53
- }), focusedDate = _m[0], setFocusedDate = _m[1];
54
- // This effect "synchronizes" the local state update back up to the parent component.
55
- useEffect(function () {
56
- var startDate = joinDateTime(rangeStart.dateString, rangeStart.timeString);
57
- var endDate = joinDateTime(rangeEnd.dateString, rangeEnd.timeString);
58
- if (startDate !== initialStartDate || endDate !== initialEndDate) {
59
- onChange({ startDate: startDate, endDate: endDate });
38
+ return findDateToFocus(parseDate(value.start.date), currentMonth, isDateEnabled);
39
+ }), focusedDate = _k[0], setFocusedDate = _k[1];
40
+ var updateCurrentMonth = function (startDate) {
41
+ if (startDate.length >= 8) {
42
+ var newCurrentMonth = startOfMonth(parseDate(startDate));
43
+ setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));
60
44
  }
61
- }, [
62
- rangeStart.dateString,
63
- rangeStart.timeString,
64
- rangeEnd.dateString,
65
- rangeEnd.timeString,
66
- initialStartDate,
67
- initialEndDate,
68
- onChange,
69
- ]);
45
+ };
46
+ // recommended to include the start/end time announced with the selection
47
+ // because the user is not aware of the fact that a start/end time is also set as soon as they select a date
48
+ var announceStart = function (startDate) {
49
+ return (i18nStrings.startDateLabel +
50
+ ', ' +
51
+ getDateLabel(normalizedLocale, startDate) +
52
+ ', ' +
53
+ i18nStrings.startTimeLabel +
54
+ ', ' +
55
+ renderTimeLabel(normalizedLocale, startDate, timeInputFormat) +
56
+ '. ');
57
+ };
58
+ var announceEnd = function (endDate) {
59
+ return (i18nStrings.endDateLabel +
60
+ ', ' +
61
+ getDateLabel(normalizedLocale, endDate) +
62
+ ', ' +
63
+ i18nStrings.endTimeLabel +
64
+ ', ' +
65
+ renderTimeLabel(normalizedLocale, endDate, timeInputFormat) +
66
+ '. ');
67
+ };
68
+ var announceRange = function (startDate, endDate) {
69
+ if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {
70
+ return "".concat(getDateLabel(normalizedLocale, startDate), " \u2013 ").concat(getDateLabel(normalizedLocale, endDate));
71
+ }
72
+ return i18nStrings.renderSelectedAbsoluteRangeAriaLive(getDateLabel(normalizedLocale, startDate), getDateLabel(normalizedLocale, endDate));
73
+ };
70
74
  var onSelectDateHandler = function (selectedDate) {
71
- // recommended to include the start/end time announced with the selection
72
- // because the user is not aware of the fact that a start/end time is also set as soon as they select a date
73
- var announceStart = function (startDate) {
74
- return (i18nStrings.startDateLabel +
75
- ', ' +
76
- getDateLabel(normalizedLocale, startDate) +
77
- ', ' +
78
- i18nStrings.startTimeLabel +
79
- ', ' +
80
- renderTimeLabel(normalizedLocale, startDate, timeInputFormat) +
81
- '. ');
82
- };
83
- var announceEnd = function (endDate) {
84
- return (i18nStrings.endDateLabel +
85
- ', ' +
86
- getDateLabel(normalizedLocale, endDate) +
87
- ', ' +
88
- i18nStrings.endTimeLabel +
89
- ', ' +
90
- renderTimeLabel(normalizedLocale, endDate, timeInputFormat) +
91
- '. ');
92
- };
93
- var announceRange = function (startDate, endDate) {
94
- if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {
95
- return "".concat(getDateLabel(normalizedLocale, startDate), " \u2013 ").concat(getDateLabel(normalizedLocale, endDate));
96
- }
97
- return i18nStrings.renderSelectedAbsoluteRangeAriaLive(getDateLabel(normalizedLocale, startDate), getDateLabel(normalizedLocale, endDate));
98
- };
75
+ var start = value.start, end = value.end;
76
+ var newStart = undefined;
77
+ var newEnd = undefined;
78
+ var announcement = '';
99
79
  // If both fields are empty, we set the start date
100
- if (!rangeStart.dateString && !rangeEnd.dateString) {
101
- var startDate = startOfDay(selectedDate);
102
- rangeStart.setDate(startDate);
103
- setAnnouncement(announceStart(startDate));
104
- return;
80
+ if (!start.date && !end.date) {
81
+ newStart = startOfDay(selectedDate);
82
+ announcement = announceStart(newStart);
105
83
  }
106
84
  // If both fields are set, we start new
107
- if (rangeStart.dateString && rangeEnd.dateString) {
108
- var startDate = startOfDay(selectedDate);
109
- rangeStart.setDate(startDate);
110
- rangeEnd.setDate(null);
111
- setAnnouncement(announceStart(startDate));
112
- return;
85
+ else if (start.date && end.date) {
86
+ newStart = startOfDay(selectedDate);
87
+ newEnd = null;
88
+ announcement = announceStart(newStart);
113
89
  }
114
90
  // If only the END date is empty, we fill it (and swap dates if needed)
115
- if (rangeStart.dateString && !rangeEnd.dateString) {
116
- var parsedStartDate = parseDate(rangeStart.dateString);
91
+ else if (start.date && !end.date) {
92
+ var parsedStartDate = parseDate(start.date);
117
93
  if (isBefore(selectedDate, parsedStartDate)) {
118
94
  // The user has selected the range backwards, so we swap start and end
119
- var startDate = startOfDay(selectedDate);
120
- var endDate = endOfDay(parsedStartDate);
121
- rangeStart.setDate(startDate);
122
- rangeEnd.setDate(endDate);
123
- setAnnouncement(announceStart(startDate) + announceRange(startDate, endDate));
95
+ newStart = startOfDay(selectedDate);
96
+ newEnd = endOfDay(parsedStartDate);
97
+ announcement = announceStart(newStart) + announceRange(newStart, newEnd);
124
98
  }
125
99
  else {
126
- var endDate = endOfDay(selectedDate);
127
- rangeEnd.setDate(endDate);
128
- setAnnouncement(announceEnd(endDate) + announceRange(parsedStartDate, endDate));
100
+ newEnd = endOfDay(selectedDate);
101
+ announcement = announceEnd(newEnd) + announceRange(parsedStartDate, newEnd);
129
102
  }
130
- return;
131
103
  }
132
104
  // If only the START date is empty, we fill it (and swap dates if needed)
133
- if (!rangeStart.dateString && rangeEnd.dateString) {
134
- var existingEndDate = parseDate(rangeEnd.dateString);
105
+ else if (!start.date && end.date) {
106
+ var existingEndDate = parseDate(end.date);
135
107
  if (isAfter(selectedDate, existingEndDate)) {
136
108
  // The user has selected the range backwards, so we swap start and end
137
- var startDate = startOfDay(existingEndDate);
138
- var endDate = endOfDay(selectedDate);
139
- rangeStart.setDate(startDate);
140
- rangeEnd.setDate(endDate);
141
- setAnnouncement(announceEnd(endDate) + announceRange(startDate, endDate));
109
+ newStart = startOfDay(existingEndDate);
110
+ newEnd = endOfDay(selectedDate);
111
+ announcement = announceEnd(newEnd) + announceRange(newStart, newEnd);
142
112
  }
143
113
  else {
144
- var startDate = startOfDay(selectedDate);
145
- rangeStart.setDate(startDate);
146
- setAnnouncement(announceStart(startDate) + announceRange(startDate, existingEndDate));
114
+ newStart = startOfDay(selectedDate);
115
+ announcement = announceStart(newStart) + announceRange(newStart, existingEndDate);
147
116
  }
148
- return;
149
117
  }
150
- // All possible conditions are covered above
118
+ var formatValue = function (date, previous) {
119
+ if (date === null) {
120
+ // explicitly reset to empty
121
+ return { date: '', time: '' };
122
+ }
123
+ else if (date === undefined) {
124
+ // keep old value
125
+ return previous;
126
+ }
127
+ return splitDateTime(formatDateTime(date));
128
+ };
129
+ setValue({
130
+ start: formatValue(newStart, value.start),
131
+ end: formatValue(newEnd, value.end)
132
+ });
133
+ setAnnouncement(announcement);
151
134
  };
152
135
  var onHeaderChangeMonthHandler = function (newCurrentMonth) {
153
136
  setCurrentMonth(newCurrentMonth);
@@ -156,26 +139,31 @@ export default function DateRangePickerCalendar(_a) {
156
139
  setFocusedDate(newBaseDate);
157
140
  };
158
141
  var onChangeStartDate = function (value) {
159
- rangeStart.setDateString(value);
160
- if (value.length >= 8) {
161
- var newCurrentMonth = startOfMonth(parseDate(value));
162
- setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));
163
- }
142
+ setValue(function (oldValue) { return (__assign(__assign({}, oldValue), { start: __assign(__assign({}, oldValue.start), { date: value }) })); });
143
+ updateCurrentMonth(value);
164
144
  };
165
- var onChangeEndDate = function (value) {
166
- rangeEnd.setDateString(value);
145
+ var interceptedSetValue = function (newValue) {
146
+ setValue(function (oldValue) {
147
+ var updated = typeof newValue === 'function' ? newValue(oldValue) : newValue;
148
+ updateCurrentMonth(updated.start.date);
149
+ return updated;
150
+ });
167
151
  };
168
152
  var headingIdPrefix = useUniqueId('date-range-picker-calendar-heading');
169
153
  return (React.createElement(React.Fragment, null,
170
154
  React.createElement("div", { className: clsx(styles['calendar-container'], (_b = {},
171
155
  _b[styles['one-grid']] = isSingleGrid,
172
156
  _b)) },
173
- React.createElement("div", { className: clsx(styles.calendar, (_c = {},
174
- _c[styles['one-grid']] = isSingleGrid,
175
- _c)) },
176
- React.createElement(CalendarHeader, { baseDate: currentMonth, locale: normalizedLocale, onChangeMonth: onHeaderChangeMonthHandler, previousMonthLabel: i18nStrings.previousMonthAriaLabel, nextMonthLabel: i18nStrings.nextMonthAriaLabel, isSingleGrid: isSingleGrid, headingIdPrefix: headingIdPrefix }),
177
- React.createElement(Grids, { isSingleGrid: isSingleGrid, locale: normalizedLocale, baseDate: currentMonth, focusedDate: focusedDate, onFocusedDateChange: setFocusedDate, isDateEnabled: isDateEnabled, onSelectDate: onSelectDateHandler, onChangeMonth: setCurrentMonth, startOfWeek: normalizedStartOfWeek, todayAriaLabel: i18nStrings.todayAriaLabel, selectedStartDate: rangeStart.date, selectedEndDate: rangeEnd.date, headingIdPrefix: headingIdPrefix })),
178
- React.createElement(RangeInputs, { startDate: rangeStart.dateString, onChangeStartDate: onChangeStartDate, startTime: rangeStart.timeString, onChangeStartTime: rangeStart.setTimeString, endDate: rangeEnd.dateString, onChangeEndDate: onChangeEndDate, endTime: rangeEnd.timeString, onChangeEndTime: rangeEnd.setTimeString, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat })),
157
+ React.createElement(SpaceBetween, { size: "s" },
158
+ React.createElement("div", { className: clsx(styles.calendar, (_c = {},
159
+ _c[styles['one-grid']] = isSingleGrid,
160
+ _c)) },
161
+ React.createElement(CalendarHeader, { baseDate: currentMonth, locale: normalizedLocale, onChangeMonth: onHeaderChangeMonthHandler, previousMonthLabel: i18nStrings.previousMonthAriaLabel, nextMonthLabel: i18nStrings.nextMonthAriaLabel, isSingleGrid: isSingleGrid, headingIdPrefix: headingIdPrefix }),
162
+ React.createElement(Grids, { isSingleGrid: isSingleGrid, locale: normalizedLocale, baseDate: currentMonth, focusedDate: focusedDate, onFocusedDateChange: setFocusedDate, isDateEnabled: isDateEnabled, onSelectDate: onSelectDateHandler, onChangeMonth: setCurrentMonth, startOfWeek: normalizedStartOfWeek, todayAriaLabel: i18nStrings.todayAriaLabel, selectedStartDate: parseDate(value.start.date, true), selectedEndDate: parseDate(value.end.date, true), headingIdPrefix: headingIdPrefix })),
163
+ React.createElement(RangeInputs, { startDate: value.start.date, onChangeStartDate: onChangeStartDate, startTime: value.start.time, onChangeStartTime: function (value) {
164
+ return setValue(function (oldValue) { return (__assign(__assign({}, oldValue), { start: __assign(__assign({}, oldValue.start), { time: value }) })); });
165
+ }, endDate: value.end.date, onChangeEndDate: function (value) { return setValue(function (oldValue) { return (__assign(__assign({}, oldValue), { end: __assign(__assign({}, oldValue.end), { date: value }) })); }); }, endTime: value.end.time, onChangeEndTime: function (value) { return setValue(function (oldValue) { return (__assign(__assign({}, oldValue), { end: __assign(__assign({}, oldValue.end), { time: value }) })); }); }, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat }),
166
+ customAbsoluteRangeControl && React.createElement("div", null, customAbsoluteRangeControl(value, interceptedSetValue)))),
179
167
  React.createElement(LiveRegion, { className: styles['calendar-aria-live'] }, announcement)));
180
168
  }
181
169
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.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\n\nimport React, { useEffect, useState } from 'react';\nimport { addMonths, endOfDay, isBefore, startOfDay, startOfMonth, isAfter, isSameMonth } from 'date-fns';\nimport styles from '../styles.css.js';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { RangeCalendarI18nStrings, RangeCalendarValue } from '../interfaces';\nimport CalendarHeader from './header';\nimport { Grids, selectFocusedDate } from './grids';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport clsx from 'clsx';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { getDateLabel, renderTimeLabel } from '../../calendar/utils/intl';\nimport LiveRegion from '../../internal/components/live-region';\nimport { normalizeLocale, normalizeStartOfWeek } from '../../internal/utils/locale';\nimport { joinDateTime, parseDate } from '../../internal/utils/date-time';\nimport { getBaseDate } from '../../calendar/utils/navigation';\nimport { useMobile } from '../../internal/hooks/use-mobile/index.js';\nimport RangeInputs from './range-inputs.js';\nimport { useDateTime } from './use-date-time.js';\n\nexport interface DateRangePickerCalendarProps extends BaseComponentProps {\n value: null | RangeCalendarValue;\n onChange: (value: RangeCalendarValue) => void;\n locale?: string;\n startOfWeek?: number;\n isDateEnabled?: (date: Date) => boolean;\n i18nStrings: RangeCalendarI18nStrings;\n dateOnly?: boolean;\n timeInputFormat?: TimeInputProps.Format;\n}\n\nexport default function DateRangePickerCalendar({\n value,\n onChange,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n i18nStrings,\n dateOnly = false,\n timeInputFormat = 'hh:mm:ss',\n}: DateRangePickerCalendarProps) {\n const isSingleGrid = useMobile();\n\n const normalizedLocale = normalizeLocale('DateRangePicker', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n\n const initialStartDate = value?.startDate ?? '';\n const rangeStart = useDateTime(initialStartDate);\n\n const initialEndDate = value?.endDate ?? '';\n const rangeEnd = useDateTime(initialEndDate);\n\n const [announcement, setAnnouncement] = useState('');\n\n const [currentMonth, setCurrentMonth] = useState(() => {\n if (rangeStart.dateString) {\n const startDate = parseDate(rangeStart.dateString);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (rangeEnd.dateString) {\n return startOfMonth(parseDate(rangeEnd.dateString));\n }\n return startOfMonth(Date.now());\n });\n\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (rangeStart.date) {\n if (isSameMonth(rangeStart.date, currentMonth)) {\n return rangeStart.date;\n }\n if (!isSingleGrid && isSameMonth(rangeStart.date, addMonths(currentMonth, -1))) {\n return rangeStart.date;\n }\n }\n return selectFocusedDate(rangeStart.date, currentMonth, isDateEnabled);\n });\n\n // This effect \"synchronizes\" the local state update back up to the parent component.\n useEffect(() => {\n const startDate = joinDateTime(rangeStart.dateString, rangeStart.timeString);\n const endDate = joinDateTime(rangeEnd.dateString, rangeEnd.timeString);\n\n if (startDate !== initialStartDate || endDate !== initialEndDate) {\n onChange({ startDate, endDate });\n }\n }, [\n rangeStart.dateString,\n rangeStart.timeString,\n rangeEnd.dateString,\n rangeEnd.timeString,\n initialStartDate,\n initialEndDate,\n onChange,\n ]);\n\n const onSelectDateHandler = (selectedDate: Date) => {\n // recommended to include the start/end time announced with the selection\n // because the user is not aware of the fact that a start/end time is also set as soon as they select a date\n const announceStart = (startDate: Date) => {\n return (\n i18nStrings.startDateLabel +\n ', ' +\n getDateLabel(normalizedLocale, startDate) +\n ', ' +\n i18nStrings.startTimeLabel +\n ', ' +\n renderTimeLabel(normalizedLocale, startDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceEnd = (endDate: Date) => {\n return (\n i18nStrings.endDateLabel +\n ', ' +\n getDateLabel(normalizedLocale, endDate) +\n ', ' +\n i18nStrings.endTimeLabel +\n ', ' +\n renderTimeLabel(normalizedLocale, endDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(normalizedLocale, startDate)} – ${getDateLabel(normalizedLocale, endDate)}`;\n }\n return i18nStrings.renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(normalizedLocale, startDate),\n getDateLabel(normalizedLocale, endDate)\n );\n };\n\n // If both fields are empty, we set the start date\n if (!rangeStart.dateString && !rangeEnd.dateString) {\n const startDate = startOfDay(selectedDate);\n rangeStart.setDate(startDate);\n setAnnouncement(announceStart(startDate));\n return;\n }\n\n // If both fields are set, we start new\n if (rangeStart.dateString && rangeEnd.dateString) {\n const startDate = startOfDay(selectedDate);\n rangeStart.setDate(startDate);\n rangeEnd.setDate(null);\n setAnnouncement(announceStart(startDate));\n return;\n }\n\n // If only the END date is empty, we fill it (and swap dates if needed)\n if (rangeStart.dateString && !rangeEnd.dateString) {\n const parsedStartDate = parseDate(rangeStart.dateString);\n\n if (isBefore(selectedDate, parsedStartDate)) {\n // The user has selected the range backwards, so we swap start and end\n\n const startDate = startOfDay(selectedDate);\n const endDate = endOfDay(parsedStartDate);\n\n rangeStart.setDate(startDate);\n rangeEnd.setDate(endDate);\n setAnnouncement(announceStart(startDate) + announceRange(startDate, endDate));\n } else {\n const endDate = endOfDay(selectedDate);\n rangeEnd.setDate(endDate);\n setAnnouncement(announceEnd(endDate) + announceRange(parsedStartDate, endDate));\n }\n return;\n }\n\n // If only the START date is empty, we fill it (and swap dates if needed)\n if (!rangeStart.dateString && rangeEnd.dateString) {\n const existingEndDate = parseDate(rangeEnd.dateString);\n\n if (isAfter(selectedDate, existingEndDate)) {\n // The user has selected the range backwards, so we swap start and end\n\n const startDate = startOfDay(existingEndDate);\n const endDate = endOfDay(selectedDate);\n\n rangeStart.setDate(startDate);\n rangeEnd.setDate(endDate);\n setAnnouncement(announceEnd(endDate) + announceRange(startDate, endDate));\n } else {\n const startDate = startOfDay(selectedDate);\n rangeStart.setDate(startDate);\n setAnnouncement(announceStart(startDate) + announceRange(startDate, existingEndDate));\n }\n return;\n }\n // All possible conditions are covered above\n };\n\n const onHeaderChangeMonthHandler = (newCurrentMonth: Date) => {\n setCurrentMonth(newCurrentMonth);\n\n const newBaseDateMonth = isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, -1);\n const newBaseDate = getBaseDate(newBaseDateMonth, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate = (value: string) => {\n rangeStart.setDateString(value);\n\n if (value.length >= 8) {\n const newCurrentMonth = startOfMonth(parseDate(value));\n setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));\n }\n };\n\n const onChangeEndDate = (value: string) => {\n rangeEnd.setDateString(value);\n };\n\n const headingIdPrefix = useUniqueId('date-range-picker-calendar-heading');\n return (\n <>\n <div\n className={clsx(styles['calendar-container'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <CalendarHeader\n baseDate={currentMonth}\n locale={normalizedLocale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={i18nStrings.previousMonthAriaLabel}\n nextMonthLabel={i18nStrings.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n headingIdPrefix={headingIdPrefix}\n />\n\n <Grids\n isSingleGrid={isSingleGrid}\n locale={normalizedLocale}\n baseDate={currentMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDateHandler}\n onChangeMonth={setCurrentMonth}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={i18nStrings.todayAriaLabel}\n selectedStartDate={rangeStart.date}\n selectedEndDate={rangeEnd.date}\n headingIdPrefix={headingIdPrefix}\n />\n </div>\n\n <RangeInputs\n startDate={rangeStart.dateString}\n onChangeStartDate={onChangeStartDate}\n startTime={rangeStart.timeString}\n onChangeStartTime={rangeStart.setTimeString}\n endDate={rangeEnd.dateString}\n onChangeEndDate={onChangeEndDate}\n endTime={rangeEnd.timeString}\n onChangeEndTime={rangeEnd.setTimeString}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n />\n </div>\n <LiveRegion className={styles['calendar-aria-live']}>{announcement}</LiveRegion>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.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\n\nimport React, { useState } from 'react';\nimport { addMonths, endOfDay, isAfter, isBefore, isSameMonth, startOfDay, startOfMonth } from 'date-fns';\nimport styles from '../styles.css.js';\nimport SpaceBetween from '../../space-between/internal';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';\nimport CalendarHeader from './header';\nimport { Grids } from './grids';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport clsx from 'clsx';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { getDateLabel, renderTimeLabel } from '../../calendar/utils/intl';\nimport LiveRegion from '../../internal/components/live-region';\nimport { normalizeLocale, normalizeStartOfWeek } from '../../internal/utils/locale';\nimport { parseDate, splitDateTime, formatDateTime } from '../../internal/utils/date-time';\nimport { getBaseDate } from '../../calendar/utils/navigation';\nimport { useMobile } from '../../internal/hooks/use-mobile/index.js';\nimport RangeInputs from './range-inputs.js';\nimport { findDateToFocus, findMonthToDisplay } from './utils';\n\nexport interface DateRangePickerCalendarProps extends BaseComponentProps {\n value: DateRangePickerProps.PendingAbsoluteValue;\n setValue: React.Dispatch<React.SetStateAction<DateRangePickerProps.PendingAbsoluteValue>>;\n locale?: string;\n startOfWeek?: number;\n isDateEnabled?: (date: Date) => boolean;\n i18nStrings: RangeCalendarI18nStrings;\n dateOnly?: boolean;\n timeInputFormat?: TimeInputProps.Format;\n customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;\n}\n\nexport default function DateRangePickerCalendar({\n value,\n setValue,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n i18nStrings,\n dateOnly = false,\n timeInputFormat = 'hh:mm:ss',\n customAbsoluteRangeControl,\n}: DateRangePickerCalendarProps) {\n const isSingleGrid = useMobile();\n const normalizedLocale = normalizeLocale('DateRangePicker', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n\n const [announcement, setAnnouncement] = useState('');\n const [currentMonth, setCurrentMonth] = useState(() => findMonthToDisplay(value, isSingleGrid));\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSameMonth(startDate, currentMonth)) {\n return startDate;\n }\n if (!isSingleGrid && isSameMonth(startDate, addMonths(currentMonth, -1))) {\n return startDate;\n }\n }\n return findDateToFocus(parseDate(value.start.date), currentMonth, isDateEnabled);\n });\n\n const updateCurrentMonth = (startDate: string) => {\n if (startDate.length >= 8) {\n const newCurrentMonth = startOfMonth(parseDate(startDate));\n setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));\n }\n };\n\n // recommended to include the start/end time announced with the selection\n // because the user is not aware of the fact that a start/end time is also set as soon as they select a date\n const announceStart = (startDate: Date) => {\n return (\n i18nStrings.startDateLabel +\n ', ' +\n getDateLabel(normalizedLocale, startDate) +\n ', ' +\n i18nStrings.startTimeLabel +\n ', ' +\n renderTimeLabel(normalizedLocale, startDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceEnd = (endDate: Date) => {\n return (\n i18nStrings.endDateLabel +\n ', ' +\n getDateLabel(normalizedLocale, endDate) +\n ', ' +\n i18nStrings.endTimeLabel +\n ', ' +\n renderTimeLabel(normalizedLocale, endDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(normalizedLocale, startDate)} – ${getDateLabel(normalizedLocale, endDate)}`;\n }\n return i18nStrings.renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(normalizedLocale, startDate),\n getDateLabel(normalizedLocale, endDate)\n );\n };\n\n const onSelectDateHandler = (selectedDate: Date) => {\n const { start, end } = value;\n let newStart: Date | undefined = undefined;\n let newEnd: Date | null | undefined = undefined;\n let announcement = '';\n\n // If both fields are empty, we set the start date\n if (!start.date && !end.date) {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart);\n }\n // If both fields are set, we start new\n else if (start.date && end.date) {\n newStart = startOfDay(selectedDate);\n newEnd = null;\n announcement = announceStart(newStart);\n }\n // If only the END date is empty, we fill it (and swap dates if needed)\n else if (start.date && !end.date) {\n const parsedStartDate = parseDate(start.date);\n\n if (isBefore(selectedDate, parsedStartDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(selectedDate);\n newEnd = endOfDay(parsedStartDate);\n announcement = announceStart(newStart) + announceRange(newStart, newEnd);\n } else {\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(parsedStartDate, newEnd);\n }\n }\n // If only the START date is empty, we fill it (and swap dates if needed)\n else if (!start.date && end.date) {\n const existingEndDate = parseDate(end.date);\n\n if (isAfter(selectedDate, existingEndDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(existingEndDate);\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(newStart, newEnd);\n } else {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart) + announceRange(newStart, existingEndDate);\n }\n }\n\n const formatValue = (\n date: Date | null | undefined,\n previous: DateRangePickerProps.DateTimeStrings\n ): DateRangePickerProps.DateTimeStrings => {\n if (date === null) {\n // explicitly reset to empty\n return { date: '', time: '' };\n } else if (date === undefined) {\n // keep old value\n return previous;\n }\n return splitDateTime(formatDateTime(date));\n };\n\n setValue({\n start: formatValue(newStart, value.start),\n end: formatValue(newEnd, value.end),\n });\n setAnnouncement(announcement);\n };\n\n const onHeaderChangeMonthHandler = (newCurrentMonth: Date) => {\n setCurrentMonth(newCurrentMonth);\n\n const newBaseDateMonth = isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, -1);\n const newBaseDate = getBaseDate(newBaseDateMonth, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate = (value: string) => {\n setValue((oldValue: DateRangePickerProps.PendingAbsoluteValue) => ({\n ...oldValue,\n start: { ...oldValue.start, date: value },\n }));\n updateCurrentMonth(value);\n };\n\n const interceptedSetValue: DateRangePickerCalendarProps['setValue'] = newValue => {\n setValue(oldValue => {\n const updated = typeof newValue === 'function' ? newValue(oldValue) : newValue;\n updateCurrentMonth(updated.start.date);\n return updated;\n });\n };\n\n const headingIdPrefix = useUniqueId('date-range-picker-calendar-heading');\n return (\n <>\n <div\n className={clsx(styles['calendar-container'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <SpaceBetween size=\"s\">\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <CalendarHeader\n baseDate={currentMonth}\n locale={normalizedLocale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={i18nStrings.previousMonthAriaLabel}\n nextMonthLabel={i18nStrings.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n headingIdPrefix={headingIdPrefix}\n />\n\n <Grids\n isSingleGrid={isSingleGrid}\n locale={normalizedLocale}\n baseDate={currentMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDateEnabled={isDateEnabled}\n onSelectDate={onSelectDateHandler}\n onChangeMonth={setCurrentMonth}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={i18nStrings.todayAriaLabel}\n selectedStartDate={parseDate(value.start.date, true)}\n selectedEndDate={parseDate(value.end.date, true)}\n headingIdPrefix={headingIdPrefix}\n />\n </div>\n\n <RangeInputs\n startDate={value.start.date}\n onChangeStartDate={onChangeStartDate}\n startTime={value.start.time}\n onChangeStartTime={value =>\n setValue(oldValue => ({ ...oldValue, start: { ...oldValue.start, time: value } }))\n }\n endDate={value.end.date}\n onChangeEndDate={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, date: value } }))}\n endTime={value.end.time}\n onChangeEndTime={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, time: value } }))}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n />\n {customAbsoluteRangeControl && <div>{customAbsoluteRangeControl(value, interceptedSetValue)}</div>}\n </SpaceBetween>\n </div>\n <LiveRegion className={styles['calendar-aria-live']}>{announcement}</LiveRegion>\n </>\n );\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { DateRangePickerProps } from '../interfaces';
2
+ export declare function findDateToFocus(selected: Date | null, baseDate: Date, isDateEnabled: DateRangePickerProps.IsDateEnabledFunction): Date | null;
3
+ export declare function findMonthToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean): Date;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,IAAI,GAAG,IAAI,EACrB,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,eAa1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,QAYzG"}
@@ -0,0 +1,31 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { addMonths, isSameMonth, startOfMonth } from 'date-fns';
4
+ import { parseDate } from '../../internal/utils/date-time';
5
+ export function findDateToFocus(selected, baseDate, isDateEnabled) {
6
+ if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {
7
+ return selected;
8
+ }
9
+ var today = new Date();
10
+ if (isDateEnabled(today) && isSameMonth(today, baseDate)) {
11
+ return today;
12
+ }
13
+ if (isDateEnabled(baseDate)) {
14
+ return baseDate;
15
+ }
16
+ return null;
17
+ }
18
+ export function findMonthToDisplay(value, isSingleGrid) {
19
+ if (value.start.date) {
20
+ var startDate = parseDate(value.start.date);
21
+ if (isSingleGrid) {
22
+ return startOfMonth(startDate);
23
+ }
24
+ return startOfMonth(addMonths(startDate, 1));
25
+ }
26
+ if (value.end.date) {
27
+ return startOfMonth(parseDate(value.end.date));
28
+ }
29
+ return startOfMonth(Date.now());
30
+ }
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,MAAM,UAAU,eAAe,CAC7B,QAAqB,EACrB,QAAc,EACd,aAAyD;IAEzD,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC1E,OAAO,QAAQ,CAAC;KACjB;IACD,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QACxD,OAAO,KAAK,CAAC;KACd;IACD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgD,EAAE,YAAqB;IACxG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACpB,IAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;SAChC;QACD,OAAO,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9C;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAClB,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { addMonths, isSameMonth, startOfMonth } from 'date-fns';\nimport { DateRangePickerProps } from '../interfaces';\nimport { parseDate } from '../../internal/utils/date-time';\n\nexport function findDateToFocus(\n selected: Date | null,\n baseDate: Date,\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction\n) {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n}\n\nexport function findMonthToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean) {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (value.end.date) {\n return startOfMonth(parseDate(value.end.date));\n }\n return startOfMonth(Date.now());\n}\n"]}
@@ -8,6 +8,7 @@ export interface DateRangePickerDropdownProps extends Pick<Required<DateRangePic
8
8
  isSingleGrid: boolean;
9
9
  ariaLabelledby?: string;
10
10
  ariaDescribedby?: string;
11
+ customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;
11
12
  }
12
- export declare function DateRangePickerDropdown({ locale, startOfWeek, isDateEnabled, isValidRange, value, onClear: clearValue, onApply: applyValue, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, }: DateRangePickerDropdownProps): JSX.Element;
13
+ export declare function DateRangePickerDropdown({ locale, startOfWeek, isDateEnabled, isValidRange, value, onClear: clearValue, onApply: applyValue, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, customAbsoluteRangeControl, }: DateRangePickerDropdownProps): JSX.Element;
13
14
  //# sourceMappingURL=dropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiBpD,eAAO,MAAM,WAAW,EAAE,oBAAoB,CAAC,gBAAkC,CAAC;AAElF,MAAM,WAAW,4BACf,SAAQ,IAAI,CACV,QAAQ,CAAC,oBAAoB,CAAC,EAC5B,QAAQ,GACR,eAAe,GACf,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,mBAAmB,CACtB;IACD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,KAAK,oBAAoB,CAAC,gBAAgB,CAAC;IAC7F,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IAEtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,EACtC,MAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,EAAE,4BAA4B,eAwL9B"}
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiBpD,eAAO,MAAM,WAAW,EAAE,oBAAoB,CAAC,gBAAkC,CAAC;AAElF,MAAM,WAAW,4BACf,SAAQ,IAAI,CACV,QAAQ,CAAC,oBAAoB,CAAC,EAC5B,QAAQ,GACR,eAAe,GACf,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,mBAAmB,CACtB;IACD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,KAAK,oBAAoB,CAAC,gBAAgB,CAAC;IAC7F,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IAEtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;CACnF;AAED,wBAAgB,uBAAuB,CAAC,EACtC,MAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,GAC3B,EAAE,4BAA4B,eA0L9B"}
@@ -14,13 +14,15 @@ import clsx from 'clsx';
14
14
  import InternalAlert from '../alert/internal';
15
15
  import LiveRegion from '../internal/components/live-region';
16
16
  import useFocusVisible from '../internal/hooks/focus-visible';
17
- import { fillMissingTime, getDefaultMode } from './utils';
17
+ import { getDefaultMode, joinAbsoluteValue, splitAbsoluteValue } from './utils';
18
18
  export var VALID_RANGE = { valid: true };
19
19
  export function DateRangePickerDropdown(_a) {
20
20
  var _b, _c;
21
- var _d = _a.locale, locale = _d === void 0 ? '' : _d, startOfWeek = _a.startOfWeek, isDateEnabled = _a.isDateEnabled, isValidRange = _a.isValidRange, value = _a.value, clearValue = _a.onClear, applyValue = _a.onApply, onDropdownClose = _a.onDropdownClose, relativeOptions = _a.relativeOptions, showClearButton = _a.showClearButton, isSingleGrid = _a.isSingleGrid, i18nStrings = _a.i18nStrings, dateOnly = _a.dateOnly, timeInputFormat = _a.timeInputFormat, rangeSelectorMode = _a.rangeSelectorMode, ariaLabelledby = _a.ariaLabelledby, ariaDescribedby = _a.ariaDescribedby;
21
+ var _d = _a.locale, locale = _d === void 0 ? '' : _d, startOfWeek = _a.startOfWeek, isDateEnabled = _a.isDateEnabled, isValidRange = _a.isValidRange, value = _a.value, clearValue = _a.onClear, applyValue = _a.onApply, onDropdownClose = _a.onDropdownClose, relativeOptions = _a.relativeOptions, showClearButton = _a.showClearButton, isSingleGrid = _a.isSingleGrid, i18nStrings = _a.i18nStrings, dateOnly = _a.dateOnly, timeInputFormat = _a.timeInputFormat, rangeSelectorMode = _a.rangeSelectorMode, ariaLabelledby = _a.ariaLabelledby, ariaDescribedby = _a.ariaDescribedby, customAbsoluteRangeControl = _a.customAbsoluteRangeControl;
22
22
  var _e = useState(getDefaultMode(value, relativeOptions, rangeSelectorMode)), rangeSelectionMode = _e[0], setRangeSelectionMode = _e[1];
23
- var _f = useState((value === null || value === void 0 ? void 0 : value.type) === 'absolute' ? value : null), selectedAbsoluteRange = _f[0], setSelectedAbsoluteRange = _f[1];
23
+ var _f = useState(function () {
24
+ return splitAbsoluteValue((value === null || value === void 0 ? void 0 : value.type) === 'absolute' ? value : null);
25
+ }), selectedAbsoluteRange = _f[0], setSelectedAbsoluteRange = _f[1];
24
26
  var _g = useState((value === null || value === void 0 ? void 0 : value.type) === 'relative' ? value : null), selectedRelativeRange = _g[0], setSelectedRelativeRange = _g[1];
25
27
  var focusVisible = useFocusVisible();
26
28
  var scrollableContainerRef = useRef(null);
@@ -36,7 +38,7 @@ export function DateRangePickerDropdown(_a) {
36
38
  clearValue();
37
39
  };
38
40
  var onApply = function () {
39
- var newValue = rangeSelectionMode === 'relative' ? selectedRelativeRange : fillMissingTime(selectedAbsoluteRange);
41
+ var newValue = rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);
40
42
  var newValidationResult = applyValue(newValue);
41
43
  if (newValidationResult.valid === false) {
42
44
  setApplyClicked(true);
@@ -49,7 +51,7 @@ export function DateRangePickerDropdown(_a) {
49
51
  };
50
52
  useEffect(function () {
51
53
  if (applyClicked) {
52
- var visibleRange = rangeSelectionMode === 'relative' ? selectedRelativeRange : fillMissingTime(selectedAbsoluteRange);
54
+ var visibleRange = rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);
53
55
  var newValidationResult = isValidRange(visibleRange);
54
56
  setValidationResult(newValidationResult || VALID_RANGE);
55
57
  }
@@ -76,7 +78,7 @@ export function DateRangePickerDropdown(_a) {
76
78
  setApplyClicked(false);
77
79
  setValidationResult(VALID_RANGE);
78
80
  }, i18nStrings: i18nStrings })),
79
- rangeSelectionMode === 'absolute' && (React.createElement(Calendar, { value: selectedAbsoluteRange ? __assign({}, selectedAbsoluteRange) : null, onChange: function (value) { return setSelectedAbsoluteRange(__assign({ type: 'absolute' }, value)); }, locale: locale, startOfWeek: startOfWeek, isDateEnabled: isDateEnabled, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat })),
81
+ rangeSelectionMode === 'absolute' && (React.createElement(Calendar, { value: selectedAbsoluteRange, setValue: setSelectedAbsoluteRange, locale: locale, startOfWeek: startOfWeek, isDateEnabled: isDateEnabled, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat, customAbsoluteRangeControl: customAbsoluteRangeControl })),
80
82
  rangeSelectionMode === 'relative' && (React.createElement(RelativeRangePicker, { isSingleGrid: isSingleGrid, options: relativeOptions, dateOnly: dateOnly, initialSelection: selectedRelativeRange, onChange: function (range) { return setSelectedRelativeRange(range); }, i18nStrings: i18nStrings }))),
81
83
  React.createElement(InternalBox, { className: styles['validation-section'], margin: !validationResult.valid ? { top: 's' } : undefined }, !validationResult.valid && (React.createElement(React.Fragment, null,
82
84
  React.createElement(InternalAlert, { type: "error", statusIconAriaLabel: i18nStrings.errorIconAriaLabel },