@cloudscape-design/components-themeable 3.0.26 → 3.0.29

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 (221) hide show
  1. package/lib/internal/scss/link/styles.scss +4 -0
  2. package/lib/internal/scss/popover/body.scss +4 -0
  3. package/lib/internal/template/alert/internal.d.ts.map +1 -1
  4. package/lib/internal/template/alert/internal.js +3 -4
  5. package/lib/internal/template/alert/internal.js.map +1 -1
  6. package/lib/internal/template/app-layout/index.js +1 -1
  7. package/lib/internal/template/app-layout/index.js.map +1 -1
  8. package/lib/internal/template/breadcrumb-group/internal.d.ts.map +1 -1
  9. package/lib/internal/template/breadcrumb-group/internal.js +4 -4
  10. package/lib/internal/template/breadcrumb-group/internal.js.map +1 -1
  11. package/lib/internal/template/button-dropdown/interfaces.d.ts +1 -1
  12. package/lib/internal/template/button-dropdown/interfaces.d.ts.map +1 -1
  13. package/lib/internal/template/button-dropdown/interfaces.js.map +1 -1
  14. package/lib/internal/template/button-dropdown/internal.js +1 -1
  15. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  16. package/lib/internal/template/cards/index.js +1 -1
  17. package/lib/internal/template/cards/index.js.map +1 -1
  18. package/lib/internal/template/code-editor/index.d.ts.map +1 -1
  19. package/lib/internal/template/code-editor/index.js +2 -3
  20. package/lib/internal/template/code-editor/index.js.map +1 -1
  21. package/lib/internal/template/container/internal.js +1 -1
  22. package/lib/internal/template/container/internal.js.map +1 -1
  23. package/lib/internal/template/container/use-sticky-header.js +1 -1
  24. package/lib/internal/template/container/use-sticky-header.js.map +1 -1
  25. package/lib/internal/template/date-picker/calendar/index.d.ts.map +1 -1
  26. package/lib/internal/template/date-picker/calendar/index.js +2 -1
  27. package/lib/internal/template/date-picker/calendar/index.js.map +1 -1
  28. package/lib/internal/template/date-picker/calendar/utils/memoized-date.d.ts +2 -0
  29. package/lib/internal/template/date-picker/calendar/utils/memoized-date.d.ts.map +1 -0
  30. package/lib/internal/template/date-picker/calendar/utils/memoized-date.js +13 -0
  31. package/lib/internal/template/date-picker/calendar/utils/memoized-date.js.map +1 -0
  32. package/lib/internal/template/date-picker/embedded.js +1 -1
  33. package/lib/internal/template/date-picker/embedded.js.map +1 -1
  34. package/lib/internal/template/date-picker/index.d.ts.map +1 -1
  35. package/lib/internal/template/date-picker/index.js +3 -4
  36. package/lib/internal/template/date-picker/index.js.map +1 -1
  37. package/lib/internal/template/date-picker/use-date-picker.d.ts.map +1 -1
  38. package/lib/internal/template/date-picker/use-date-picker.js +1 -1
  39. package/lib/internal/template/date-picker/use-date-picker.js.map +1 -1
  40. package/lib/internal/template/date-range-picker/calendar/grids/day/index.js +1 -1
  41. package/lib/internal/template/date-range-picker/calendar/grids/day/index.js.map +1 -1
  42. package/lib/internal/template/date-range-picker/calendar/index.d.ts.map +1 -1
  43. package/lib/internal/template/date-range-picker/calendar/index.js +9 -11
  44. package/lib/internal/template/date-range-picker/calendar/index.js.map +1 -1
  45. package/lib/internal/template/date-range-picker/index.d.ts.map +1 -1
  46. package/lib/internal/template/date-range-picker/index.js +4 -4
  47. package/lib/internal/template/date-range-picker/index.js.map +1 -1
  48. package/lib/internal/template/date-range-picker/time-offset.d.ts +0 -7
  49. package/lib/internal/template/date-range-picker/time-offset.d.ts.map +1 -1
  50. package/lib/internal/template/date-range-picker/time-offset.js +4 -60
  51. package/lib/internal/template/date-range-picker/time-offset.js.map +1 -1
  52. package/lib/internal/template/flashbar/index.js +1 -1
  53. package/lib/internal/template/flashbar/index.js.map +1 -1
  54. package/lib/internal/template/form-field/internal.d.ts.map +1 -1
  55. package/lib/internal/template/form-field/internal.js +3 -6
  56. package/lib/internal/template/form-field/internal.js.map +1 -1
  57. package/lib/internal/template/header/internal.d.ts.map +1 -1
  58. package/lib/internal/template/header/internal.js +3 -6
  59. package/lib/internal/template/header/internal.js.map +1 -1
  60. package/lib/internal/template/icon/icons.js +1 -1
  61. package/lib/internal/template/icon/interfaces.d.ts +1 -1
  62. package/lib/internal/template/icon/interfaces.d.ts.map +1 -1
  63. package/lib/internal/template/icon/interfaces.js.map +1 -1
  64. package/lib/internal/template/icon/internal.js +1 -1
  65. package/lib/internal/template/icon/internal.js.map +1 -1
  66. package/lib/internal/template/internal/components/checkbox-icon/index.d.ts.map +1 -1
  67. package/lib/internal/template/internal/components/checkbox-icon/index.js +3 -4
  68. package/lib/internal/template/internal/components/checkbox-icon/index.js.map +1 -1
  69. package/lib/internal/template/internal/components/content-layout/index.d.ts.map +1 -1
  70. package/lib/internal/template/internal/components/content-layout/index.js +3 -4
  71. package/lib/internal/template/internal/components/content-layout/index.js.map +1 -1
  72. package/lib/internal/template/internal/components/date-input/index.d.ts +1 -1
  73. package/lib/internal/template/internal/components/date-input/index.d.ts.map +1 -1
  74. package/lib/internal/template/internal/components/date-input/index.js +6 -4
  75. package/lib/internal/template/internal/components/date-input/index.js.map +1 -1
  76. package/lib/internal/template/internal/components/dropdown/index.js +1 -1
  77. package/lib/internal/template/internal/components/dropdown/index.js.map +1 -1
  78. package/lib/internal/template/internal/components/masked-input/utils/mask-format.d.ts.map +1 -1
  79. package/lib/internal/template/internal/components/masked-input/utils/mask-format.js +2 -1
  80. package/lib/internal/template/internal/components/masked-input/utils/mask-format.js.map +1 -1
  81. package/lib/internal/template/internal/components/masked-input/utils/strings.d.ts +0 -1
  82. package/lib/internal/template/internal/components/masked-input/utils/strings.d.ts.map +1 -1
  83. package/lib/internal/template/internal/components/masked-input/utils/strings.js +0 -6
  84. package/lib/internal/template/internal/components/masked-input/utils/strings.js.map +1 -1
  85. package/lib/internal/template/internal/environment.js +1 -1
  86. package/lib/internal/template/internal/hooks/use-mutation-observer/index.d.ts +5 -0
  87. package/lib/internal/template/internal/hooks/use-mutation-observer/index.d.ts.map +1 -1
  88. package/lib/internal/template/internal/hooks/use-mutation-observer/index.js +5 -0
  89. package/lib/internal/template/internal/hooks/use-mutation-observer/index.js.map +1 -1
  90. package/lib/internal/template/internal/hooks/use-portal-mode-classes/index.js +1 -1
  91. package/lib/internal/template/internal/hooks/use-portal-mode-classes/index.js.map +1 -1
  92. package/lib/internal/template/internal/hooks/use-singleton-handler/index.d.ts +2 -1
  93. package/lib/internal/template/internal/hooks/use-singleton-handler/index.d.ts.map +1 -1
  94. package/lib/internal/template/internal/hooks/use-singleton-handler/index.js.map +1 -1
  95. package/lib/internal/template/internal/hooks/use-visual-mode/index.d.ts +1 -1
  96. package/lib/internal/template/internal/hooks/use-visual-mode/index.d.ts.map +1 -1
  97. package/lib/internal/template/internal/hooks/use-visual-mode/index.js +16 -11
  98. package/lib/internal/template/internal/hooks/use-visual-mode/index.js.map +1 -1
  99. package/lib/internal/template/internal/utils/date-time/display-format.d.ts +9 -0
  100. package/lib/internal/template/internal/utils/date-time/display-format.d.ts.map +1 -0
  101. package/lib/internal/template/internal/utils/date-time/display-format.js +15 -0
  102. package/lib/internal/template/internal/utils/date-time/display-format.js.map +1 -0
  103. package/lib/internal/template/internal/utils/date-time/format-date.d.ts +7 -0
  104. package/lib/internal/template/internal/utils/date-time/format-date.d.ts.map +1 -0
  105. package/lib/internal/template/internal/utils/date-time/format-date.js +15 -0
  106. package/lib/internal/template/internal/utils/date-time/format-date.js.map +1 -0
  107. package/lib/internal/template/internal/utils/date-time/format-time.d.ts +5 -0
  108. package/lib/internal/template/internal/utils/date-time/format-time.d.ts.map +1 -0
  109. package/lib/internal/template/internal/utils/date-time/format-time.js +13 -0
  110. package/lib/internal/template/internal/utils/date-time/format-time.js.map +1 -0
  111. package/lib/internal/template/internal/utils/date-time/format-timezone-offset.d.ts +2 -0
  112. package/lib/internal/template/internal/utils/date-time/format-timezone-offset.d.ts.map +1 -0
  113. package/lib/internal/template/internal/utils/date-time/format-timezone-offset.js +11 -0
  114. package/lib/internal/template/internal/utils/date-time/format-timezone-offset.js.map +1 -0
  115. package/lib/internal/template/internal/utils/date-time/get-browser-timezone-offset.d.ts +7 -0
  116. package/lib/internal/template/internal/utils/date-time/get-browser-timezone-offset.d.ts.map +1 -0
  117. package/lib/internal/template/internal/utils/date-time/get-browser-timezone-offset.js +11 -0
  118. package/lib/internal/template/internal/utils/date-time/get-browser-timezone-offset.js.map +1 -0
  119. package/lib/internal/template/internal/utils/date-time/index.d.ts +11 -0
  120. package/lib/internal/template/internal/utils/date-time/index.d.ts.map +1 -0
  121. package/lib/internal/template/internal/utils/date-time/index.js +13 -0
  122. package/lib/internal/template/internal/utils/date-time/index.js.map +1 -0
  123. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.d.ts +5 -0
  124. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.d.ts.map +1 -0
  125. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.js +10 -0
  126. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.js.map +1 -0
  127. package/lib/internal/template/internal/utils/date-time/join-date-time.d.ts +2 -0
  128. package/lib/internal/template/internal/utils/date-time/join-date-time.d.ts.map +1 -0
  129. package/lib/internal/template/internal/utils/date-time/join-date-time.js +6 -0
  130. package/lib/internal/template/internal/utils/date-time/join-date-time.js.map +1 -0
  131. package/lib/internal/template/internal/utils/date-time/parse-date.d.ts +8 -0
  132. package/lib/internal/template/internal/utils/date-time/parse-date.d.ts.map +1 -0
  133. package/lib/internal/template/internal/utils/date-time/parse-date.js +16 -0
  134. package/lib/internal/template/internal/utils/date-time/parse-date.js.map +1 -0
  135. package/lib/internal/template/internal/utils/date-time/parse-timezone-offset.d.ts +5 -0
  136. package/lib/internal/template/internal/utils/date-time/parse-timezone-offset.d.ts.map +1 -0
  137. package/lib/internal/template/internal/utils/date-time/parse-timezone-offset.js +20 -0
  138. package/lib/internal/template/internal/utils/date-time/parse-timezone-offset.js.map +1 -0
  139. package/lib/internal/template/internal/utils/date-time/shift-timezone-offset.d.ts +12 -0
  140. package/lib/internal/template/internal/utils/date-time/shift-timezone-offset.d.ts.map +1 -0
  141. package/lib/internal/template/internal/utils/date-time/shift-timezone-offset.js +27 -0
  142. package/lib/internal/template/internal/utils/date-time/shift-timezone-offset.js.map +1 -0
  143. package/lib/internal/template/internal/utils/strings/index.d.ts +3 -0
  144. package/lib/internal/template/internal/utils/strings/index.d.ts.map +1 -0
  145. package/lib/internal/template/internal/utils/strings/index.js +5 -0
  146. package/lib/internal/template/internal/utils/strings/index.js.map +1 -0
  147. package/lib/internal/template/internal/utils/strings/join-strings.d.ts +5 -0
  148. package/lib/internal/template/internal/utils/strings/join-strings.d.ts.map +1 -0
  149. package/lib/internal/template/internal/utils/{strings.js → strings/join-strings.js} +7 -6
  150. package/lib/internal/template/internal/utils/strings/join-strings.js.map +1 -0
  151. package/lib/internal/template/internal/utils/strings/pad-left-zeros.d.ts +5 -0
  152. package/lib/internal/template/internal/utils/strings/pad-left-zeros.d.ts.map +1 -0
  153. package/lib/internal/template/internal/utils/strings/pad-left-zeros.js +12 -0
  154. package/lib/internal/template/internal/utils/strings/pad-left-zeros.js.map +1 -0
  155. package/lib/internal/template/link/internal.js +3 -3
  156. package/lib/internal/template/link/internal.js.map +1 -1
  157. package/lib/internal/template/link/styles.css.js +19 -18
  158. package/lib/internal/template/link/styles.scoped.css +73 -69
  159. package/lib/internal/template/link/styles.selectors.js +19 -18
  160. package/lib/internal/template/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
  161. package/lib/internal/template/mixed-line-bar-chart/bar-series.js +3 -4
  162. package/lib/internal/template/mixed-line-bar-chart/bar-series.js.map +1 -1
  163. package/lib/internal/template/mixed-line-bar-chart/chart-container.js +1 -1
  164. package/lib/internal/template/mixed-line-bar-chart/chart-container.js.map +1 -1
  165. package/lib/internal/template/mixed-line-bar-chart/interfaces.d.ts +5 -4
  166. package/lib/internal/template/mixed-line-bar-chart/interfaces.d.ts.map +1 -1
  167. package/lib/internal/template/mixed-line-bar-chart/interfaces.js.map +1 -1
  168. package/lib/internal/template/modal/internal.js +1 -1
  169. package/lib/internal/template/modal/internal.js.map +1 -1
  170. package/lib/internal/template/package-lock.json +131 -0
  171. package/lib/internal/template/pie-chart/pie-chart.d.ts.map +1 -1
  172. package/lib/internal/template/pie-chart/pie-chart.js +2 -2
  173. package/lib/internal/template/pie-chart/pie-chart.js.map +1 -1
  174. package/lib/internal/template/pie-chart/segments.d.ts +1 -2
  175. package/lib/internal/template/pie-chart/segments.d.ts.map +1 -1
  176. package/lib/internal/template/pie-chart/segments.js +2 -2
  177. package/lib/internal/template/pie-chart/segments.js.map +1 -1
  178. package/lib/internal/template/popover/container.js +1 -1
  179. package/lib/internal/template/popover/container.js.map +1 -1
  180. package/lib/internal/template/popover/styles.css.js +48 -48
  181. package/lib/internal/template/popover/styles.scoped.css +65 -60
  182. package/lib/internal/template/popover/styles.selectors.js +48 -48
  183. package/lib/internal/template/property-filter/index.d.ts.map +1 -1
  184. package/lib/internal/template/property-filter/index.js +10 -2
  185. package/lib/internal/template/property-filter/index.js.map +1 -1
  186. package/lib/internal/template/radio-group/radio-button.d.ts.map +1 -1
  187. package/lib/internal/template/radio-group/radio-button.js +3 -4
  188. package/lib/internal/template/radio-group/radio-button.js.map +1 -1
  189. package/lib/internal/template/s3-resource-selector/s3-modal/index.d.ts.map +1 -1
  190. package/lib/internal/template/s3-resource-selector/s3-modal/index.js +2 -3
  191. package/lib/internal/template/s3-resource-selector/s3-modal/index.js.map +1 -1
  192. package/lib/internal/template/split-panel/index.d.ts.map +1 -1
  193. package/lib/internal/template/split-panel/index.js +2 -2
  194. package/lib/internal/template/split-panel/index.js.map +1 -1
  195. package/lib/internal/template/table/internal.js +1 -1
  196. package/lib/internal/template/table/internal.js.map +1 -1
  197. package/lib/internal/template/table/sticky-scrollbar.js +1 -1
  198. package/lib/internal/template/table/sticky-scrollbar.js.map +1 -1
  199. package/lib/internal/template/tabs/tab-header-bar.js +1 -1
  200. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  201. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
  202. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.js +3 -4
  203. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
  204. package/lib/internal/template/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
  205. package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js +5 -7
  206. package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  207. package/lib/internal/template/wizard/index.d.ts.map +1 -1
  208. package/lib/internal/template/wizard/index.js +2 -3
  209. package/lib/internal/template/wizard/index.js.map +1 -1
  210. package/package.json +1 -1
  211. package/lib/internal/template/date-picker/calendar/utils/date.d.ts +0 -10
  212. package/lib/internal/template/date-picker/calendar/utils/date.d.ts.map +0 -1
  213. package/lib/internal/template/date-picker/calendar/utils/date.js +0 -50
  214. package/lib/internal/template/date-picker/calendar/utils/date.js.map +0 -1
  215. package/lib/internal/template/internal/components/date-input/utils/date.d.ts +0 -5
  216. package/lib/internal/template/internal/components/date-input/utils/date.d.ts.map +0 -1
  217. package/lib/internal/template/internal/components/date-input/utils/date.js +0 -11
  218. package/lib/internal/template/internal/components/date-input/utils/date.js.map +0 -1
  219. package/lib/internal/template/internal/utils/strings.d.ts +0 -2
  220. package/lib/internal/template/internal/utils/strings.d.ts.map +0 -1
  221. package/lib/internal/template/internal/utils/strings.js.map +0 -1
@@ -7,8 +7,8 @@ import { getDaysInMonth, isAfter, isBefore, isLastDayOfMonth, isSameMonth, isTod
7
7
  import { getDateLabel } from '../../../../date-picker/calendar/utils/intl';
8
8
  import clsx from 'clsx';
9
9
  import { KeyCode } from '../../../../internal/keycode.js';
10
- import { formatDate } from '../../../../date-picker/calendar/utils/date.js';
11
10
  import useFocusVisible from '../../../../internal/hooks/focus-visible';
11
+ import { formatDate } from '../../../../internal/utils/date-time';
12
12
  function propsAreEqual(prevProps, nextProps) {
13
13
  return (prevProps.locale === nextProps.locale &&
14
14
  prevProps.baseDate.getTime() === nextProps.baseDate.getTime() &&
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/date-range-picker/calendar/grids/day/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 from 'react';\nimport styles from './styles.css.js';\nimport { DateRangePickerProps } from '../../../interfaces';\nimport { getDaysInMonth, isAfter, isBefore, isLastDayOfMonth, isSameMonth, isToday as isTodayFn } from 'date-fns';\nimport { getDateLabel } from '../../../../date-picker/calendar/utils/intl';\nimport clsx from 'clsx';\nimport { KeyCode } from '../../../../internal/keycode.js';\nimport { formatDate } from '../../../../date-picker/calendar/utils/date.js';\nimport useFocusVisible from '../../../../internal/hooks/focus-visible';\n\ninterface GridDayProps {\n locale: string;\n baseDate: Date;\n date: Date;\n\n isDateInFirstRow: boolean;\n isDateInFirstColumn: boolean;\n isDateInLastColumn: boolean;\n isDateInSelectionStartWeek: boolean;\n isDateInSelectionEndWeek: boolean;\n\n isFocusedDate: boolean;\n isDateEnabled?: DateRangePickerProps.IsDateEnabledFunction;\n todayAriaLabel: string;\n onSelectDate: (date: Date) => void;\n onFocusDate: (date: Date) => void;\n isInRange: boolean;\n isSelected: boolean;\n\n // these only exist for the test-utils\n isStartDate: boolean;\n isEndDate: boolean;\n // used for refresh styles\n onlyOneSelected: boolean;\n isRangeStartDate: boolean;\n isRangeEndDate: boolean;\n}\n\nfunction propsAreEqual(prevProps: GridDayProps, nextProps: GridDayProps): boolean {\n return (\n prevProps.locale === nextProps.locale &&\n prevProps.baseDate.getTime() === nextProps.baseDate.getTime() &&\n prevProps.date.getTime() === nextProps.date.getTime() &&\n prevProps.isDateInFirstRow === nextProps.isDateInFirstRow &&\n prevProps.isDateInFirstColumn === nextProps.isDateInFirstColumn &&\n prevProps.isDateInLastColumn === nextProps.isDateInLastColumn &&\n prevProps.isDateInSelectionStartWeek === nextProps.isDateInSelectionStartWeek &&\n prevProps.isDateInSelectionEndWeek === nextProps.isDateInSelectionEndWeek &&\n prevProps.isFocusedDate === nextProps.isFocusedDate &&\n prevProps.isDateEnabled === nextProps.isDateEnabled &&\n prevProps.todayAriaLabel === nextProps.todayAriaLabel &&\n prevProps.onSelectDate === nextProps.onSelectDate &&\n prevProps.onFocusDate === nextProps.onFocusDate &&\n prevProps.isInRange === nextProps.isInRange &&\n prevProps.isSelected === nextProps.isSelected &&\n prevProps.isStartDate === nextProps.isStartDate &&\n prevProps.isEndDate === nextProps.isEndDate &&\n prevProps.onlyOneSelected === nextProps.onlyOneSelected &&\n prevProps.isRangeStartDate === nextProps.isRangeStartDate &&\n prevProps.isRangeEndDate === nextProps.isRangeEndDate\n );\n}\n\nconst GridDay = React.memo(\n React.forwardRef<HTMLDivElement, GridDayProps>(\n (\n {\n locale,\n baseDate,\n date,\n isSelected,\n isStartDate,\n isEndDate,\n onlyOneSelected,\n isRangeStartDate,\n isRangeEndDate,\n isFocusedDate,\n isDateEnabled,\n todayAriaLabel,\n onSelectDate,\n onFocusDate,\n isDateInFirstRow,\n isDateInFirstColumn,\n isDateInLastColumn,\n isDateInSelectionStartWeek,\n isDateInSelectionEndWeek,\n isInRange,\n }: GridDayProps,\n ref\n ) => {\n const dayLabel = getDateLabel(locale, date);\n\n const labels = [dayLabel];\n\n const isEnabled = !isDateEnabled || isDateEnabled(date);\n const isFocusable = isFocusedDate && isEnabled;\n const isToday = isTodayFn(date);\n const computedAttributes: React.HTMLAttributes<HTMLDivElement> = {};\n\n const focusVisible = useFocusVisible();\n\n const baseClasses = {\n [styles['in-first-row']]: isDateInFirstRow,\n [styles['in-first-column']]: isDateInFirstColumn,\n };\n\n if (!isSameMonth(date, baseDate)) {\n const classNames = clsx(styles.day, 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 return <div className={classNames} ref={ref}></div>;\n }\n\n const classNames = clsx(styles.day, baseClasses, {\n [styles['in-current-month']]: isSameMonth(date, baseDate),\n [styles.enabled]: isEnabled,\n [styles.selected]: isSelected,\n [styles['start-date']]: isStartDate,\n [styles['end-date']]: isEndDate,\n [styles['range-start-date']]: isRangeStartDate,\n [styles['range-end-date']]: isRangeEndDate,\n [styles['no-range']]: isSelected && onlyOneSelected,\n [styles['in-range']]: isInRange,\n [styles['in-range-border-top']]: isDateInSelectionStartWeek || date.getDate() <= 7,\n [styles['in-range-border-bottom']]: isDateInSelectionEndWeek || date.getDate() > getDaysInMonth(date) - 7,\n [styles['in-range-border-left']]: isDateInFirstColumn || date.getDate() === 1 || isRangeStartDate,\n [styles['in-range-border-right']]: isDateInLastColumn || isLastDayOfMonth(date) || isRangeEndDate,\n [styles.today]: isToday,\n });\n\n computedAttributes['aria-pressed'] = isSelected || isInRange;\n\n if (isToday) {\n labels.push(todayAriaLabel);\n computedAttributes['aria-current'] = 'date';\n }\n\n if (isEnabled) {\n computedAttributes.onClick = () => onSelectDate(date);\n computedAttributes.onFocus = () => onFocusDate(date);\n computedAttributes.tabIndex = -1;\n }\n\n if (isFocusable) {\n computedAttributes.tabIndex = 0;\n }\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.keyCode === KeyCode.space) {\n event.preventDefault();\n onSelectDate(date);\n }\n };\n\n return (\n <div\n className={classNames}\n aria-label={labels.join('. ')}\n data-date={formatDate(date)}\n role=\"button\"\n {...computedAttributes}\n ref={ref}\n onKeyDown={onKeyDown}\n {...focusVisible}\n >\n <span className={styles['day-inner']}>{date.getDate()}</span>\n </div>\n );\n }\n ),\n propsAreEqual\n);\n\nexport default GridDay;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/date-range-picker/calendar/grids/day/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,OAAO,eAAe,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AA8BlE,SAAS,aAAa,CAAC,SAAuB,EAAE,SAAuB;IACrE,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC7D,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QACrD,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,gBAAgB;QACzD,SAAS,CAAC,mBAAmB,KAAK,SAAS,CAAC,mBAAmB;QAC/D,SAAS,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB;QAC7D,SAAS,CAAC,0BAA0B,KAAK,SAAS,CAAC,0BAA0B;QAC7E,SAAS,CAAC,wBAAwB,KAAK,SAAS,CAAC,wBAAwB;QACzE,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa;QACnD,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa;QACnD,SAAS,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc;QACrD,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY;QACjD,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;QAC/C,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;QAC3C,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;QAC7C,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;QAC/C,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;QAC3C,SAAS,CAAC,eAAe,KAAK,SAAS,CAAC,eAAe;QACvD,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,gBAAgB;QACzD,SAAS,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc,CACtD,CAAC;AACJ,CAAC;AAED,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,KAAK,CAAC,UAAU,CACd,UACE,EAqBe,EACf,GAAG;;QArBD,MAAM,YAAA,EACN,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,SAAS,eAAA,EACT,eAAe,qBAAA,EACf,gBAAgB,sBAAA,EAChB,cAAc,oBAAA,EACd,aAAa,mBAAA,EACb,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,YAAY,kBAAA,EACZ,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,mBAAmB,yBAAA,EACnB,kBAAkB,wBAAA,EAClB,0BAA0B,gCAAA,EAC1B,wBAAwB,8BAAA,EACxB,SAAS,eAAA;IAIX,IAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5C,IAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE1B,IAAM,SAAS,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACxD,IAAM,WAAW,GAAG,aAAa,IAAI,SAAS,CAAC;IAC/C,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,IAAM,kBAAkB,GAAyC,EAAE,CAAC;IAEpE,IAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAM,WAAW;QACf,GAAC,MAAM,CAAC,cAAc,CAAC,IAAG,gBAAgB;QAC1C,GAAC,MAAM,CAAC,iBAAiB,CAAC,IAAG,mBAAmB;WACjD,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;QAChC,IAAM,YAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW;YAC7C,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;YACvD,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,gBAAgB,CAAC,IAAI,CAAC;YACrD,GAAC,MAAM,CAAC,eAAe,CAAC,IAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAClD,CAAC;QACH,OAAO,6BAAK,SAAS,EAAE,YAAU,EAAE,GAAG,EAAE,GAAG,GAAQ,CAAC;KACrD;IAED,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW;QAC7C,GAAC,MAAM,CAAC,kBAAkB,CAAC,IAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;QACzD,GAAC,MAAM,CAAC,OAAO,IAAG,SAAS;QAC3B,GAAC,MAAM,CAAC,QAAQ,IAAG,UAAU;QAC7B,GAAC,MAAM,CAAC,YAAY,CAAC,IAAG,WAAW;QACnC,GAAC,MAAM,CAAC,UAAU,CAAC,IAAG,SAAS;QAC/B,GAAC,MAAM,CAAC,kBAAkB,CAAC,IAAG,gBAAgB;QAC9C,GAAC,MAAM,CAAC,gBAAgB,CAAC,IAAG,cAAc;QAC1C,GAAC,MAAM,CAAC,UAAU,CAAC,IAAG,UAAU,IAAI,eAAe;QACnD,GAAC,MAAM,CAAC,UAAU,CAAC,IAAG,SAAS;QAC/B,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,0BAA0B,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;QAClF,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAG,wBAAwB,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QACzG,GAAC,MAAM,CAAC,sBAAsB,CAAC,IAAG,mBAAmB,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,gBAAgB;QACjG,GAAC,MAAM,CAAC,uBAAuB,CAAC,IAAG,kBAAkB,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,cAAc;QACjG,GAAC,MAAM,CAAC,KAAK,IAAG,OAAO;YACvB,CAAC;IAEH,kBAAkB,CAAC,cAAc,CAAC,GAAG,UAAU,IAAI,SAAS,CAAC;IAE7D,IAAI,OAAO,EAAE;QACX,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,kBAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;KAC7C;IAED,IAAI,SAAS,EAAE;QACb,kBAAkB,CAAC,OAAO,GAAG,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,CAAC;QACtD,kBAAkB,CAAC,OAAO,GAAG,cAAM,OAAA,WAAW,CAAC,IAAI,CAAC,EAAjB,CAAiB,CAAC;QACrD,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KAClC;IAED,IAAI,WAAW,EAAE;QACf,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjC;IAED,IAAM,SAAS,GAAG,UAAC,KAA0C;QAC3D,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,CAAC;SACpB;IACH,CAAC,CAAC;IAEF,OAAO,CACL,sCACE,SAAS,EAAE,UAAU,gBACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAClB,UAAU,CAAC,IAAI,CAAC,EAC3B,IAAI,EAAC,QAAQ,IACT,kBAAkB,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,IAChB,YAAY;QAEhB,8BAAM,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAG,IAAI,CAAC,OAAO,EAAE,CAAQ,CACzD,CACP,CAAC;AACJ,CAAC,CACF,EACD,aAAa,CACd,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport styles from './styles.css.js';\nimport { DateRangePickerProps } from '../../../interfaces';\nimport { getDaysInMonth, isAfter, isBefore, isLastDayOfMonth, isSameMonth, isToday as isTodayFn } from 'date-fns';\nimport { getDateLabel } from '../../../../date-picker/calendar/utils/intl';\nimport clsx from 'clsx';\nimport { KeyCode } from '../../../../internal/keycode.js';\nimport useFocusVisible from '../../../../internal/hooks/focus-visible';\nimport { formatDate } from '../../../../internal/utils/date-time';\n\ninterface GridDayProps {\n locale: string;\n baseDate: Date;\n date: Date;\n\n isDateInFirstRow: boolean;\n isDateInFirstColumn: boolean;\n isDateInLastColumn: boolean;\n isDateInSelectionStartWeek: boolean;\n isDateInSelectionEndWeek: boolean;\n\n isFocusedDate: boolean;\n isDateEnabled?: DateRangePickerProps.IsDateEnabledFunction;\n todayAriaLabel: string;\n onSelectDate: (date: Date) => void;\n onFocusDate: (date: Date) => void;\n isInRange: boolean;\n isSelected: boolean;\n\n // these only exist for the test-utils\n isStartDate: boolean;\n isEndDate: boolean;\n // used for refresh styles\n onlyOneSelected: boolean;\n isRangeStartDate: boolean;\n isRangeEndDate: boolean;\n}\n\nfunction propsAreEqual(prevProps: GridDayProps, nextProps: GridDayProps): boolean {\n return (\n prevProps.locale === nextProps.locale &&\n prevProps.baseDate.getTime() === nextProps.baseDate.getTime() &&\n prevProps.date.getTime() === nextProps.date.getTime() &&\n prevProps.isDateInFirstRow === nextProps.isDateInFirstRow &&\n prevProps.isDateInFirstColumn === nextProps.isDateInFirstColumn &&\n prevProps.isDateInLastColumn === nextProps.isDateInLastColumn &&\n prevProps.isDateInSelectionStartWeek === nextProps.isDateInSelectionStartWeek &&\n prevProps.isDateInSelectionEndWeek === nextProps.isDateInSelectionEndWeek &&\n prevProps.isFocusedDate === nextProps.isFocusedDate &&\n prevProps.isDateEnabled === nextProps.isDateEnabled &&\n prevProps.todayAriaLabel === nextProps.todayAriaLabel &&\n prevProps.onSelectDate === nextProps.onSelectDate &&\n prevProps.onFocusDate === nextProps.onFocusDate &&\n prevProps.isInRange === nextProps.isInRange &&\n prevProps.isSelected === nextProps.isSelected &&\n prevProps.isStartDate === nextProps.isStartDate &&\n prevProps.isEndDate === nextProps.isEndDate &&\n prevProps.onlyOneSelected === nextProps.onlyOneSelected &&\n prevProps.isRangeStartDate === nextProps.isRangeStartDate &&\n prevProps.isRangeEndDate === nextProps.isRangeEndDate\n );\n}\n\nconst GridDay = React.memo(\n React.forwardRef<HTMLDivElement, GridDayProps>(\n (\n {\n locale,\n baseDate,\n date,\n isSelected,\n isStartDate,\n isEndDate,\n onlyOneSelected,\n isRangeStartDate,\n isRangeEndDate,\n isFocusedDate,\n isDateEnabled,\n todayAriaLabel,\n onSelectDate,\n onFocusDate,\n isDateInFirstRow,\n isDateInFirstColumn,\n isDateInLastColumn,\n isDateInSelectionStartWeek,\n isDateInSelectionEndWeek,\n isInRange,\n }: GridDayProps,\n ref\n ) => {\n const dayLabel = getDateLabel(locale, date);\n\n const labels = [dayLabel];\n\n const isEnabled = !isDateEnabled || isDateEnabled(date);\n const isFocusable = isFocusedDate && isEnabled;\n const isToday = isTodayFn(date);\n const computedAttributes: React.HTMLAttributes<HTMLDivElement> = {};\n\n const focusVisible = useFocusVisible();\n\n const baseClasses = {\n [styles['in-first-row']]: isDateInFirstRow,\n [styles['in-first-column']]: isDateInFirstColumn,\n };\n\n if (!isSameMonth(date, baseDate)) {\n const classNames = clsx(styles.day, 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 return <div className={classNames} ref={ref}></div>;\n }\n\n const classNames = clsx(styles.day, baseClasses, {\n [styles['in-current-month']]: isSameMonth(date, baseDate),\n [styles.enabled]: isEnabled,\n [styles.selected]: isSelected,\n [styles['start-date']]: isStartDate,\n [styles['end-date']]: isEndDate,\n [styles['range-start-date']]: isRangeStartDate,\n [styles['range-end-date']]: isRangeEndDate,\n [styles['no-range']]: isSelected && onlyOneSelected,\n [styles['in-range']]: isInRange,\n [styles['in-range-border-top']]: isDateInSelectionStartWeek || date.getDate() <= 7,\n [styles['in-range-border-bottom']]: isDateInSelectionEndWeek || date.getDate() > getDaysInMonth(date) - 7,\n [styles['in-range-border-left']]: isDateInFirstColumn || date.getDate() === 1 || isRangeStartDate,\n [styles['in-range-border-right']]: isDateInLastColumn || isLastDayOfMonth(date) || isRangeEndDate,\n [styles.today]: isToday,\n });\n\n computedAttributes['aria-pressed'] = isSelected || isInRange;\n\n if (isToday) {\n labels.push(todayAriaLabel);\n computedAttributes['aria-current'] = 'date';\n }\n\n if (isEnabled) {\n computedAttributes.onClick = () => onSelectDate(date);\n computedAttributes.onFocus = () => onFocusDate(date);\n computedAttributes.tabIndex = -1;\n }\n\n if (isFocusable) {\n computedAttributes.tabIndex = 0;\n }\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.keyCode === KeyCode.space) {\n event.preventDefault();\n onSelectDate(date);\n }\n };\n\n return (\n <div\n className={classNames}\n aria-label={labels.join('. ')}\n data-date={formatDate(date)}\n role=\"button\"\n {...computedAttributes}\n ref={ref}\n onKeyDown={onKeyDown}\n {...focusVisible}\n >\n <span className={styles['day-inner']}>{date.getDate()}</span>\n </div>\n );\n }\n ),\n propsAreEqual\n);\n\nexport default GridDay;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAgBhE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAS7D,MAAM,WAAW,iBAAiB;IAChC,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,oBAAY,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAMjD,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC1D,iBAAiB,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,aAAa,KAAK,IAAI,CAAC;IACvE,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;CACvB;;AAED,wBAAoC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQhE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAU7D,MAAM,WAAW,iBAAiB;IAChC,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,oBAAY,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAMjD,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC1D,iBAAiB,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,aAAa,KAAK,IAAI,CAAC;IACvE,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;CACvB;;AAED,wBAAoC"}
@@ -6,7 +6,6 @@ import styles from '../styles.css.js';
6
6
  import CalendarHeader from './header';
7
7
  import { Grids, selectFocusedDate } from './grids';
8
8
  import moveFocusHandler from '../../date-picker/calendar/utils/move-focus-handler';
9
- import { displayToIso, formatDate, formatTime, formatISOStringWithoutTimezone, isoToDisplay, parseDate, } from '../../date-picker/calendar/utils/date';
10
9
  import InternalSpaceBetween from '../../space-between/internal';
11
10
  import InternalFormField from '../../form-field/internal';
12
11
  import DateInput from '../../internal/components/date-input';
@@ -17,6 +16,7 @@ import { useUniqueId } from '../../internal/hooks/use-unique-id';
17
16
  import { getDateLabel, renderTimeLabel } from '../../date-picker/calendar/utils/intl';
18
17
  import LiveRegion from '../../internal/components/live-region';
19
18
  import { normalizeStartOfWeek } from '../../date-picker/calendar/utils/locales';
19
+ import { formatDate, formatTime, joinDateTime, parseDate } from '../../internal/utils/date-time';
20
20
  export default forwardRef(Calendar);
21
21
  function Calendar(_a, ref) {
22
22
  var _b;
@@ -66,8 +66,8 @@ function Calendar(_a, ref) {
66
66
  }), focusedDate = _s[0], setFocusedDate = _s[1];
67
67
  useEffect(function () {
68
68
  // This effect "synchronizes" the local state update back up to the overall DateRangePicker component
69
- var startDate = formatISOStringWithoutTimezone(startDateString, startTimeString);
70
- var endDate = formatISOStringWithoutTimezone(endDateString, endTimeString);
69
+ var startDate = joinDateTime(startDateString, startTimeString);
70
+ var endDate = joinDateTime(endDateString, endTimeString);
71
71
  if (startDate !== initialStartDate || endDate !== initialEndDate) {
72
72
  onSelectDateRange({
73
73
  startDate: startDate,
@@ -183,16 +183,14 @@ function Calendar(_a, ref) {
183
183
  setFocusedDate(newBaseDate);
184
184
  };
185
185
  var onChangeStartDate = function (e) {
186
- var isoDateString = displayToIso(e.detail.value);
187
- setStartDateString(isoDateString);
188
- if (isoDateString.length >= 8) {
189
- var newCurrentMonth = startOfMonth(parseDate(isoDateString));
186
+ setStartDateString(e.detail.value);
187
+ if (e.detail.value.length >= 8) {
188
+ var newCurrentMonth = startOfMonth(parseDate(e.detail.value));
190
189
  setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));
191
190
  }
192
191
  };
193
192
  var onChangeEndDate = function (e) {
194
- var isoDateString = displayToIso(e.detail.value);
195
- setEndDateString(isoDateString);
193
+ setEndDateString(e.detail.value);
196
194
  };
197
195
  var constrainttextId = useUniqueId('awsui-area-date-range-picker');
198
196
  constrainttextId = i18nStrings.dateTimeConstraintText ? constrainttextId : '';
@@ -208,14 +206,14 @@ function Calendar(_a, ref) {
208
206
  React.createElement("div", { className: styles['date-and-time-wrapper'] },
209
207
  React.createElement("div", { className: styles['date-and-time-wrapper__date'] },
210
208
  React.createElement(InternalFormField, { label: i18nStrings.startDateLabel, stretch: true },
211
- React.createElement(DateInput, { value: isoToDisplay(startDateString), autoComplete: false, disableBrowserAutocorrect: true, disableAutocompleteOnBlur: false, className: styles['start-date-input'], onChange: onChangeStartDate, placeholder: "YYYY/MM/DD", ariaDescribedby: constrainttextId }))),
209
+ React.createElement(DateInput, { value: startDateString, autoComplete: false, disableBrowserAutocorrect: true, disableAutocompleteOnBlur: false, className: styles['start-date-input'], onChange: onChangeStartDate, placeholder: "YYYY/MM/DD", ariaDescribedby: constrainttextId }))),
212
210
  !dateOnly && (React.createElement("div", { className: styles['date-and-time-wrapper__time'] },
213
211
  React.createElement(InternalFormField, { label: i18nStrings.startTimeLabel, stretch: true },
214
212
  React.createElement(InternalTimeInput, { value: startTimeString, onChange: function (e) { return setStartTimeString(e.detail.value); }, format: timeInputFormat, placeholder: timeInputFormat, className: styles['start-time-input'], ariaDescribedby: constrainttextId }))))),
215
213
  React.createElement("div", { className: styles['date-and-time-wrapper'] },
216
214
  React.createElement("div", { className: styles['date-and-time-wrapper__date'] },
217
215
  React.createElement(InternalFormField, { label: i18nStrings.endDateLabel, stretch: true },
218
- React.createElement(DateInput, { value: isoToDisplay(endDateString), autoComplete: false, disableBrowserAutocorrect: true, disableAutocompleteOnBlur: false, className: styles['end-date-input'], onChange: onChangeEndDate, placeholder: "YYYY/MM/DD", ariaDescribedby: constrainttextId }))),
216
+ React.createElement(DateInput, { value: endDateString, autoComplete: false, disableBrowserAutocorrect: true, disableAutocompleteOnBlur: false, className: styles['end-date-input'], onChange: onChangeEndDate, placeholder: "YYYY/MM/DD", ariaDescribedby: constrainttextId }))),
219
217
  !dateOnly && (React.createElement("div", { className: styles['date-and-time-wrapper__time'] },
220
218
  React.createElement(InternalFormField, { label: i18nStrings.endTimeLabel, stretch: true },
221
219
  React.createElement(InternalTimeInput, { value: endTimeString, onChange: function (e) { return setEndTimeString(e.detail.value); }, format: timeInputFormat, placeholder: timeInputFormat, className: styles['end-time-input'], ariaDescribedby: constrainttextId })))))),
@@ -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\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, 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 { DateRangePickerProps, Focusable } from '../interfaces';\nimport CalendarHeader from './header';\nimport { Grids, selectFocusedDate } from './grids';\nimport moveFocusHandler from '../../date-picker/calendar/utils/move-focus-handler';\nimport {\n displayToIso,\n formatDate,\n formatTime,\n formatISOStringWithoutTimezone,\n isoToDisplay,\n parseDate,\n} from '../../date-picker/calendar/utils/date';\nimport InternalSpaceBetween from '../../space-between/internal';\nimport InternalFormField from '../../form-field/internal';\nimport { InputProps } from '../../input/interfaces';\nimport DateInput from '../../internal/components/date-input';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport InternalTimeInput from '../../time-input/internal';\nimport clsx from 'clsx';\nimport { getBaseDate } from './get-base-date.js';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { getDateLabel, renderTimeLabel } from '../../date-picker/calendar/utils/intl';\nimport LiveRegion from '../../internal/components/live-region';\nimport { normalizeStartOfWeek } from '../../date-picker/calendar/utils/locales';\n\nexport interface DateChangeHandler {\n (detail: Date): void;\n}\n\nexport interface MonthChangeHandler {\n (newMonth: Date): void;\n}\n\nexport type DayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\ninterface HeaderChangeMonthHandler {\n (isPreviousButtonClick?: boolean): void;\n}\n\nexport interface CalendarProps extends BaseComponentProps {\n locale: string;\n startOfWeek: number | undefined;\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n onSelectDateRange: (value: DateRangePickerProps.AbsoluteValue) => void;\n initialStartDate: string | undefined;\n initialEndDate: string | undefined;\n i18nStrings: DateRangePickerProps.I18nStrings;\n dateOnly: boolean;\n timeInputFormat: TimeInputProps.Format;\n isSingleGrid: boolean;\n}\n\nexport default forwardRef(Calendar);\n\nfunction Calendar(\n {\n locale,\n startOfWeek,\n isDateEnabled,\n onSelectDateRange,\n initialEndDate = '',\n initialStartDate = '',\n i18nStrings,\n dateOnly,\n isSingleGrid,\n timeInputFormat,\n }: CalendarProps,\n ref: React.Ref<Focusable>\n) {\n const elementRef = useRef<HTMLDivElement>(null);\n\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, locale);\n\n useImperativeHandle(ref, () => ({\n focus() {\n if (elementRef.current) {\n const prevButton = elementRef.current.getElementsByClassName(styles['calendar-prev-month-btn'])[0];\n (prevButton as undefined | HTMLButtonElement)?.focus();\n }\n },\n }));\n\n const [initialStartDateString = '', initialStartTimeString = ''] = initialStartDate.split('T');\n const [initialEndDateString = '', initialEndTimeString = ''] = initialEndDate.split('T');\n\n const [startDateString, setStartDateString] = useState(initialStartDateString);\n const [startTimeString, setStartTimeString] = useState(initialStartTimeString);\n\n const [endDateString, setEndDateString] = useState(initialEndDateString);\n const [endTimeString, setEndTimeString] = useState(initialEndTimeString);\n\n const selectedStartDate = parseDate(startDateString, true);\n const selectedEndDate = parseDate(endDateString, true);\n\n const [announcement, setAnnouncement] = useState('');\n\n const [currentMonth, setCurrentMonth] = useState(() => {\n if (startDateString) {\n const startDate = parseDate(startDateString);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (endDateString) {\n return startOfMonth(parseDate(endDateString));\n }\n return startOfMonth(Date.now());\n });\n\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (selectedStartDate) {\n if (isSameMonth(selectedStartDate, currentMonth)) {\n return selectedStartDate;\n }\n if (!isSingleGrid && isSameMonth(selectedStartDate, addMonths(currentMonth, -1))) {\n return selectedStartDate;\n }\n }\n return selectFocusedDate(selectedStartDate, currentMonth, isDateEnabled);\n });\n\n useEffect(() => {\n // This effect \"synchronizes\" the local state update back up to the overall DateRangePicker component\n\n const startDate = formatISOStringWithoutTimezone(startDateString, startTimeString);\n const endDate = formatISOStringWithoutTimezone(endDateString, endTimeString);\n\n if (startDate !== initialStartDate || endDate !== initialEndDate) {\n onSelectDateRange({\n startDate,\n endDate,\n type: 'absolute',\n });\n }\n }, [\n startDateString,\n startTimeString,\n endDateString,\n endTimeString,\n onSelectDateRange,\n initialStartDate,\n initialEndDate,\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(locale, startDate) +\n ', ' +\n i18nStrings.startTimeLabel +\n ', ' +\n renderTimeLabel(locale, startDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceEnd = (endDate: Date) => {\n return (\n i18nStrings.endDateLabel +\n ', ' +\n getDateLabel(locale, endDate) +\n ', ' +\n i18nStrings.endTimeLabel +\n ', ' +\n renderTimeLabel(locale, endDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(locale, startDate)} – ${getDateLabel(locale, endDate)}`;\n }\n return i18nStrings.renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(locale, startDate),\n getDateLabel(locale, endDate)\n );\n };\n\n // If both fields are empty, we set the start date\n if (!startDateString && !endDateString) {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n setAnnouncement(announceStart(startDate));\n return;\n }\n\n // If both fields are set, we start new\n if (startDateString && endDateString) {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString('');\n setEndTimeString('');\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 (startDateString && !endDateString) {\n const parsedStartDate = parseDate(startDateString);\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 setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(endDate));\n setAnnouncement(announceStart(startDate) + announceRange(startDate, endDate));\n } else {\n const endDate = endOfDay(selectedDate);\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(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 (!startDateString && endDateString) {\n const existingEndDate = parseDate(endDateString);\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 setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(endDate));\n setAnnouncement(announceEnd(endDate) + announceRange(startDate, endDate));\n } else {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n setAnnouncement(announceStart(startDate) + announceRange(startDate, existingEndDate));\n }\n return;\n }\n // All possible conditions are covered above\n };\n\n const onHeaderChangeMonthHandler: HeaderChangeMonthHandler = isPrevious => {\n const newCurrentMonth = addMonths(currentMonth, isPrevious ? -1 : 1);\n setCurrentMonth(newCurrentMonth);\n\n const newBaseDateMonth = isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, -1);\n const newBaseDate = getBaseDate(newBaseDateMonth, 1, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate: InputProps['onChange'] = e => {\n const isoDateString = displayToIso(e.detail.value);\n setStartDateString(isoDateString);\n\n if (isoDateString.length >= 8) {\n const newCurrentMonth = startOfMonth(parseDate(isoDateString));\n setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));\n }\n };\n\n const onChangeEndDate: InputProps['onChange'] = e => {\n const isoDateString = displayToIso(e.detail.value);\n setEndDateString(isoDateString);\n };\n\n let constrainttextId = useUniqueId('awsui-area-date-range-picker');\n constrainttextId = i18nStrings.dateTimeConstraintText ? constrainttextId : '';\n\n return (\n <>\n <InternalSpaceBetween size=\"m\">\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n role=\"application\"\n ref={elementRef}\n >\n <CalendarHeader\n baseDate={currentMonth}\n locale={locale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={i18nStrings.previousMonthAriaLabel}\n nextMonthLabel={i18nStrings.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n />\n\n <Grids\n isSingleGrid={isSingleGrid}\n locale={locale}\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={selectedStartDate}\n selectedEndDate={selectedEndDate}\n handleFocusMove={moveFocusHandler}\n />\n </div>\n <InternalSpaceBetween direction=\"vertical\" size=\"xxs\">\n <InternalSpaceBetween size=\"xs\" direction={isSingleGrid ? 'vertical' : 'horizontal'}>\n <div className={styles['date-and-time-wrapper']}>\n <div className={styles['date-and-time-wrapper__date']}>\n <InternalFormField label={i18nStrings.startDateLabel} stretch={true}>\n <DateInput\n value={isoToDisplay(startDateString)}\n autoComplete={false}\n disableBrowserAutocorrect={true}\n disableAutocompleteOnBlur={false}\n className={styles['start-date-input']}\n onChange={onChangeStartDate}\n placeholder=\"YYYY/MM/DD\"\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n {!dateOnly && (\n <div className={styles['date-and-time-wrapper__time']}>\n <InternalFormField label={i18nStrings.startTimeLabel} stretch={true}>\n <InternalTimeInput\n value={startTimeString}\n onChange={e => setStartTimeString(e.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['start-time-input']}\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n )}\n </div>\n\n <div className={styles['date-and-time-wrapper']}>\n <div className={styles['date-and-time-wrapper__date']}>\n <InternalFormField label={i18nStrings.endDateLabel} stretch={true}>\n <DateInput\n value={isoToDisplay(endDateString)}\n autoComplete={false}\n disableBrowserAutocorrect={true}\n disableAutocompleteOnBlur={false}\n className={styles['end-date-input']}\n onChange={onChangeEndDate}\n placeholder=\"YYYY/MM/DD\"\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n {!dateOnly && (\n <div className={styles['date-and-time-wrapper__time']}>\n <InternalFormField label={i18nStrings.endTimeLabel} stretch={true}>\n <InternalTimeInput\n value={endTimeString}\n onChange={e => setEndTimeString(e.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['end-time-input']}\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n )}\n </div>\n </InternalSpaceBetween>\n {i18nStrings.dateTimeConstraintText && (\n <div className={styles['date-and-time-constrainttext']} id={constrainttextId}>\n {i18nStrings.dateTimeConstraintText}\n </div>\n )}\n </InternalSpaceBetween>\n </InternalSpaceBetween>\n <LiveRegion>\n <span className={styles['calendar-aria-live']}>{announcement}</span>\n </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\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, 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 { DateRangePickerProps, Focusable } from '../interfaces';\nimport CalendarHeader from './header';\nimport { Grids, selectFocusedDate } from './grids';\nimport moveFocusHandler from '../../date-picker/calendar/utils/move-focus-handler';\nimport InternalSpaceBetween from '../../space-between/internal';\nimport InternalFormField from '../../form-field/internal';\nimport { InputProps } from '../../input/interfaces';\nimport DateInput from '../../internal/components/date-input';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport InternalTimeInput from '../../time-input/internal';\nimport clsx from 'clsx';\nimport { getBaseDate } from './get-base-date.js';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { getDateLabel, renderTimeLabel } from '../../date-picker/calendar/utils/intl';\nimport LiveRegion from '../../internal/components/live-region';\nimport { normalizeStartOfWeek } from '../../date-picker/calendar/utils/locales';\nimport { formatDate, formatTime, joinDateTime, parseDate } from '../../internal/utils/date-time';\n\nexport interface DateChangeHandler {\n (detail: Date): void;\n}\n\nexport interface MonthChangeHandler {\n (newMonth: Date): void;\n}\n\nexport type DayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\ninterface HeaderChangeMonthHandler {\n (isPreviousButtonClick?: boolean): void;\n}\n\nexport interface CalendarProps extends BaseComponentProps {\n locale: string;\n startOfWeek: number | undefined;\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n onSelectDateRange: (value: DateRangePickerProps.AbsoluteValue) => void;\n initialStartDate: string | undefined;\n initialEndDate: string | undefined;\n i18nStrings: DateRangePickerProps.I18nStrings;\n dateOnly: boolean;\n timeInputFormat: TimeInputProps.Format;\n isSingleGrid: boolean;\n}\n\nexport default forwardRef(Calendar);\n\nfunction Calendar(\n {\n locale,\n startOfWeek,\n isDateEnabled,\n onSelectDateRange,\n initialEndDate = '',\n initialStartDate = '',\n i18nStrings,\n dateOnly,\n isSingleGrid,\n timeInputFormat,\n }: CalendarProps,\n ref: React.Ref<Focusable>\n) {\n const elementRef = useRef<HTMLDivElement>(null);\n\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, locale);\n\n useImperativeHandle(ref, () => ({\n focus() {\n if (elementRef.current) {\n const prevButton = elementRef.current.getElementsByClassName(styles['calendar-prev-month-btn'])[0];\n (prevButton as undefined | HTMLButtonElement)?.focus();\n }\n },\n }));\n\n const [initialStartDateString = '', initialStartTimeString = ''] = initialStartDate.split('T');\n const [initialEndDateString = '', initialEndTimeString = ''] = initialEndDate.split('T');\n\n const [startDateString, setStartDateString] = useState(initialStartDateString);\n const [startTimeString, setStartTimeString] = useState(initialStartTimeString);\n\n const [endDateString, setEndDateString] = useState(initialEndDateString);\n const [endTimeString, setEndTimeString] = useState(initialEndTimeString);\n\n const selectedStartDate = parseDate(startDateString, true);\n const selectedEndDate = parseDate(endDateString, true);\n\n const [announcement, setAnnouncement] = useState('');\n\n const [currentMonth, setCurrentMonth] = useState(() => {\n if (startDateString) {\n const startDate = parseDate(startDateString);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (endDateString) {\n return startOfMonth(parseDate(endDateString));\n }\n return startOfMonth(Date.now());\n });\n\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (selectedStartDate) {\n if (isSameMonth(selectedStartDate, currentMonth)) {\n return selectedStartDate;\n }\n if (!isSingleGrid && isSameMonth(selectedStartDate, addMonths(currentMonth, -1))) {\n return selectedStartDate;\n }\n }\n return selectFocusedDate(selectedStartDate, currentMonth, isDateEnabled);\n });\n\n useEffect(() => {\n // This effect \"synchronizes\" the local state update back up to the overall DateRangePicker component\n\n const startDate = joinDateTime(startDateString, startTimeString);\n const endDate = joinDateTime(endDateString, endTimeString);\n\n if (startDate !== initialStartDate || endDate !== initialEndDate) {\n onSelectDateRange({\n startDate,\n endDate,\n type: 'absolute',\n });\n }\n }, [\n startDateString,\n startTimeString,\n endDateString,\n endTimeString,\n onSelectDateRange,\n initialStartDate,\n initialEndDate,\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(locale, startDate) +\n ', ' +\n i18nStrings.startTimeLabel +\n ', ' +\n renderTimeLabel(locale, startDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceEnd = (endDate: Date) => {\n return (\n i18nStrings.endDateLabel +\n ', ' +\n getDateLabel(locale, endDate) +\n ', ' +\n i18nStrings.endTimeLabel +\n ', ' +\n renderTimeLabel(locale, endDate, timeInputFormat) +\n '. '\n );\n };\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!i18nStrings.renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(locale, startDate)} – ${getDateLabel(locale, endDate)}`;\n }\n return i18nStrings.renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(locale, startDate),\n getDateLabel(locale, endDate)\n );\n };\n\n // If both fields are empty, we set the start date\n if (!startDateString && !endDateString) {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n setAnnouncement(announceStart(startDate));\n return;\n }\n\n // If both fields are set, we start new\n if (startDateString && endDateString) {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString('');\n setEndTimeString('');\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 (startDateString && !endDateString) {\n const parsedStartDate = parseDate(startDateString);\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 setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(endDate));\n setAnnouncement(announceStart(startDate) + announceRange(startDate, endDate));\n } else {\n const endDate = endOfDay(selectedDate);\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(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 (!startDateString && endDateString) {\n const existingEndDate = parseDate(endDateString);\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 setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n\n setEndDateString(formatDate(endDate));\n setEndTimeString(formatTime(endDate));\n setAnnouncement(announceEnd(endDate) + announceRange(startDate, endDate));\n } else {\n const startDate = startOfDay(selectedDate);\n setStartDateString(formatDate(startDate));\n setStartTimeString(formatTime(startDate));\n setAnnouncement(announceStart(startDate) + announceRange(startDate, existingEndDate));\n }\n return;\n }\n // All possible conditions are covered above\n };\n\n const onHeaderChangeMonthHandler: HeaderChangeMonthHandler = isPrevious => {\n const newCurrentMonth = addMonths(currentMonth, isPrevious ? -1 : 1);\n setCurrentMonth(newCurrentMonth);\n\n const newBaseDateMonth = isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, -1);\n const newBaseDate = getBaseDate(newBaseDateMonth, 1, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate: InputProps['onChange'] = e => {\n setStartDateString(e.detail.value);\n\n if (e.detail.value.length >= 8) {\n const newCurrentMonth = startOfMonth(parseDate(e.detail.value));\n setCurrentMonth(isSingleGrid ? newCurrentMonth : addMonths(newCurrentMonth, 1));\n }\n };\n\n const onChangeEndDate: InputProps['onChange'] = e => {\n setEndDateString(e.detail.value);\n };\n\n let constrainttextId = useUniqueId('awsui-area-date-range-picker');\n constrainttextId = i18nStrings.dateTimeConstraintText ? constrainttextId : '';\n\n return (\n <>\n <InternalSpaceBetween size=\"m\">\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n role=\"application\"\n ref={elementRef}\n >\n <CalendarHeader\n baseDate={currentMonth}\n locale={locale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={i18nStrings.previousMonthAriaLabel}\n nextMonthLabel={i18nStrings.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n />\n\n <Grids\n isSingleGrid={isSingleGrid}\n locale={locale}\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={selectedStartDate}\n selectedEndDate={selectedEndDate}\n handleFocusMove={moveFocusHandler}\n />\n </div>\n <InternalSpaceBetween direction=\"vertical\" size=\"xxs\">\n <InternalSpaceBetween size=\"xs\" direction={isSingleGrid ? 'vertical' : 'horizontal'}>\n <div className={styles['date-and-time-wrapper']}>\n <div className={styles['date-and-time-wrapper__date']}>\n <InternalFormField label={i18nStrings.startDateLabel} stretch={true}>\n <DateInput\n value={startDateString}\n autoComplete={false}\n disableBrowserAutocorrect={true}\n disableAutocompleteOnBlur={false}\n className={styles['start-date-input']}\n onChange={onChangeStartDate}\n placeholder=\"YYYY/MM/DD\"\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n {!dateOnly && (\n <div className={styles['date-and-time-wrapper__time']}>\n <InternalFormField label={i18nStrings.startTimeLabel} stretch={true}>\n <InternalTimeInput\n value={startTimeString}\n onChange={e => setStartTimeString(e.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['start-time-input']}\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n )}\n </div>\n\n <div className={styles['date-and-time-wrapper']}>\n <div className={styles['date-and-time-wrapper__date']}>\n <InternalFormField label={i18nStrings.endDateLabel} stretch={true}>\n <DateInput\n value={endDateString}\n autoComplete={false}\n disableBrowserAutocorrect={true}\n disableAutocompleteOnBlur={false}\n className={styles['end-date-input']}\n onChange={onChangeEndDate}\n placeholder=\"YYYY/MM/DD\"\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n {!dateOnly && (\n <div className={styles['date-and-time-wrapper__time']}>\n <InternalFormField label={i18nStrings.endTimeLabel} stretch={true}>\n <InternalTimeInput\n value={endTimeString}\n onChange={e => setEndTimeString(e.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['end-time-input']}\n ariaDescribedby={constrainttextId}\n />\n </InternalFormField>\n </div>\n )}\n </div>\n </InternalSpaceBetween>\n {i18nStrings.dateTimeConstraintText && (\n <div className={styles['date-and-time-constrainttext']} id={constrainttextId}>\n {i18nStrings.dateTimeConstraintText}\n </div>\n )}\n </InternalSpaceBetween>\n </InternalSpaceBetween>\n <LiveRegion>\n <span className={styles['calendar-aria-live']}>{announcement}</span>\n </LiveRegion>\n </>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAyBpD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AA0EhC,QAAA,MAAM,eAAe,uGAgMpB,CAAC;AAGF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA0BpD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAyEhC,QAAA,MAAM,eAAe,uGAgMpB,CAAC;AAGF,eAAe,eAAe,CAAC"}
@@ -18,7 +18,7 @@ import { useMobile } from '../internal/hooks/use-mobile';
18
18
  import ButtonTrigger from '../internal/components/button-trigger';
19
19
  import { useFormFieldContext } from '../internal/context/form-field-context';
20
20
  import InternalIcon from '../icon/internal';
21
- import { getBrowserTimezoneOffset, shiftTimeOffset, formatOffset, setTimeOffset } from './time-offset';
21
+ import { shiftTimeOffset, setTimeOffset } from './time-offset';
22
22
  import useBaseComponent from '../internal/hooks/use-base-component';
23
23
  import { useMergeRefs } from '../internal/hooks/use-merge-refs';
24
24
  import { fireNonCancelableEvent } from '../internal/events/index.js';
@@ -26,6 +26,7 @@ import { isDevelopment } from '../internal/is-development.js';
26
26
  import { warnOnce } from '../internal/logging.js';
27
27
  import { usePrevious } from '../internal/hooks/use-previous/index.js';
28
28
  import { useUniqueId } from '../internal/hooks/use-unique-id';
29
+ import { formatTimezoneOffset, getBrowserTimezoneOffset, isIsoDateOnly } from '../internal/utils/date-time';
29
30
  function formatDateRange(range, placeholder, formatRelativeRange, timeOffset) {
30
31
  if (!range) {
31
32
  return (React.createElement("span", { className: styles['label-text'], "aria-disabled": true }, placeholder));
@@ -41,15 +42,14 @@ function BreakSpaces(_a) {
41
42
  token === ' ' && React.createElement("wbr", null))); })));
42
43
  }
43
44
  function formatAbsoluteRange(value, timeOffset) {
44
- var formattedOffset = isDateOnly(value) ? '' : formatOffset(timeOffset);
45
+ var formattedOffset = isDateOnly(value) ? '' : formatTimezoneOffset(timeOffset);
45
46
  return value.startDate + formattedOffset + ' ' + '—' + ' ' + value.endDate + formattedOffset;
46
47
  }
47
48
  function isDateOnly(value) {
48
49
  if (!value || value.type !== 'absolute') {
49
50
  return false;
50
51
  }
51
- var dateRegex = /^\d{4}-\d{2}-\d{2}$/;
52
- return dateRegex.test(value.startDate) && dateRegex.test(value.endDate);
52
+ return isIsoDateOnly(value.startDate) && isIsoDateOnly(value.endDate);
53
53
  }
54
54
  function formatValue(value, _a) {
55
55
  var timeOffset = _a.timeOffset, dateOnly = _a.dateOnly;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/date-range-picker/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, { Ref, useEffect, useRef, useState } from 'react';\nimport styles from './styles.css.js';\nimport { DateRangePickerProps } from './interfaces';\nimport { normalizeLocale } from '../date-picker/calendar/utils/locales';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { KeyCode } from '../internal/keycode';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport InternalBox from '../box/internal';\nimport { DateRangePickerDropdown } from './dropdown';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport Dropdown from '../internal/components/dropdown';\nimport { useFocusTracker } from '../internal/hooks/use-focus-tracker';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport ButtonTrigger from '../internal/components/button-trigger';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport InternalIcon from '../icon/internal';\nimport { getBrowserTimezoneOffset, shiftTimeOffset, formatOffset, setTimeOffset } from './time-offset';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { fireNonCancelableEvent } from '../internal/events/index.js';\nimport { isDevelopment } from '../internal/is-development.js';\nimport { warnOnce } from '../internal/logging.js';\nimport { usePrevious } from '../internal/hooks/use-previous/index.js';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\n\nexport { DateRangePickerProps };\n\nfunction formatDateRange(\n range: null | DateRangePickerProps.Value,\n placeholder: string,\n formatRelativeRange: DateRangePickerProps.I18nStrings['formatRelativeRange'],\n timeOffset: number\n) {\n if (!range) {\n return (\n <span className={styles['label-text']} aria-disabled={true}>\n {placeholder}\n </span>\n );\n }\n\n const formatted =\n range.type === 'relative' ? (\n formatRelativeRange(range)\n ) : (\n <BreakSpaces text={formatAbsoluteRange(range, timeOffset)} />\n );\n\n return (\n <InternalBox fontWeight=\"normal\" display=\"inline\" color=\"inherit\">\n {formatted}\n </InternalBox>\n );\n}\n\nfunction BreakSpaces({ text }: { text: string }) {\n const tokens = text.split(/( )/);\n return (\n <div style={{ whiteSpace: 'nowrap' }}>\n {tokens.map((token, index) => (\n <React.Fragment key={index}>\n {token}\n {token === ' ' && <wbr />}\n </React.Fragment>\n ))}\n </div>\n );\n}\n\nfunction formatAbsoluteRange(value: DateRangePickerProps.AbsoluteValue, timeOffset: number): string {\n const formattedOffset = isDateOnly(value) ? '' : formatOffset(timeOffset);\n return value.startDate + formattedOffset + ' ' + '—' + ' ' + value.endDate + formattedOffset;\n}\n\nfunction isDateOnly(value: null | DateRangePickerProps.Value) {\n if (!value || value.type !== 'absolute') {\n return false;\n }\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n return dateRegex.test(value.startDate) && dateRegex.test(value.endDate);\n}\n\nfunction formatValue(\n value: null | DateRangePickerProps.Value,\n { timeOffset, dateOnly }: { timeOffset: number; dateOnly: boolean }\n): null | DateRangePickerProps.Value {\n if (!value || value.type === 'relative') {\n return value;\n }\n if (dateOnly) {\n return {\n type: 'absolute',\n startDate: value.startDate.split('T')[0],\n endDate: value.endDate.split('T')[0],\n };\n }\n return setTimeOffset(value, timeOffset);\n}\n\nconst DateRangePicker = React.forwardRef(\n (\n {\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n value,\n placeholder,\n readOnly = false,\n disabled = false,\n onChange,\n onBlur,\n onFocus,\n relativeOptions = [],\n i18nStrings,\n isValidRange = () => ({ valid: true }),\n showClearButton = true,\n dateOnly = false,\n timeOffset = getBrowserTimezoneOffset(),\n timeInputFormat = 'hh:mm:ss',\n expandToViewport = false,\n rangeSelectorMode = 'default',\n ...rest\n }: DateRangePickerProps,\n ref: Ref<DateRangePickerProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('DateRangePicker');\n checkControlled('DateRangePicker', 'value', value, 'onChange', onChange);\n\n value = isDateOnly(value) ? value : shiftTimeOffset(value, timeOffset);\n\n const baseProps = getBaseProps(rest);\n const { invalid, controlId, ariaDescribedby, ariaLabelledby } = useFormFieldContext({\n ariaLabelledby: rest.ariaLabelledby ?? i18nStrings.ariaLabelledby,\n ariaDescribedby: rest.ariaDescribedby ?? i18nStrings.ariaDescribedby,\n ...rest,\n });\n const isSingleGrid = useMobile();\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n useForwardFocus(ref, triggerRef);\n\n const rootRef = useRef<HTMLDivElement>(null);\n const dropdownId = useUniqueId('date-range-picker-dropdown');\n\n useFocusTracker({ rootRef, onBlur, onFocus, viewportId: expandToViewport ? dropdownId : '' });\n\n const [isDropDownOpen, setIsDropDownOpen] = useState<boolean>(false);\n\n const normalizedLocale = normalizeLocale('DateRangePicker', locale ?? '');\n\n const closeDropdown = (focusTrigger = false) => {\n setIsDropDownOpen(false);\n if (focusTrigger) {\n triggerRef.current?.focus();\n }\n };\n\n const onWrapperKeyDownHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.keyCode === KeyCode.escape) {\n closeDropdown(true);\n }\n };\n\n const onClear = () => {\n fireNonCancelableEvent(onChange, { value: null });\n };\n\n const onApply = (newValue: null | DateRangePickerProps.Value): DateRangePickerProps.ValidationResult => {\n const validationResult = isValidRange(newValue);\n if (validationResult?.valid === false) {\n return validationResult;\n }\n\n if (isDevelopment) {\n if (newValue?.type === 'absolute') {\n const [startDateWithoutTime] = newValue.startDate.split('T');\n const [endDateWithoutTime] = newValue.endDate.split('T');\n if (!startDateWithoutTime || !endDateWithoutTime) {\n warnOnce(\n 'DateRangePicker',\n 'You have provided an `isValidRange` prop that did not catch a missing start or end date.'\n );\n }\n }\n }\n fireNonCancelableEvent(onChange, { value: formatValue(newValue, { dateOnly, timeOffset }) });\n return validationResult || { valid: true };\n };\n\n const prevDateOnly = usePrevious(dateOnly);\n useEffect(() => {\n if (prevDateOnly !== undefined && prevDateOnly !== dateOnly) {\n warnOnce(\n 'DateRangePicker',\n `The provided \\`dateOnly\\` flag has been changed from \"${prevDateOnly}\" to \"${dateOnly}\" which can lead to unexpected value format. Consider using separate components.`\n );\n }\n }, [prevDateOnly, dateOnly]);\n\n if (value && value.type !== 'absolute' && value.type !== 'relative') {\n warnOnce('DateRangePicker', 'You provided an invalid value. Reverting back to default.');\n value = null;\n }\n\n if (\n (value?.type === 'absolute' && rangeSelectorMode === 'relative-only') ||\n (value?.type === 'relative' && rangeSelectorMode === 'absolute-only')\n ) {\n warnOnce(\n 'DateRangePicker',\n 'The provided value does not correspond to the current range selector mode. Reverting back to default.'\n );\n value = null;\n }\n\n const trigger = (\n <div className={styles['trigger-wrapper']}>\n <ButtonTrigger\n ref={triggerRef}\n id={controlId}\n invalid={invalid}\n ariaLabel={i18nStrings.ariaLabel}\n ariaDescribedby={ariaDescribedby}\n ariaLabelledby={ariaLabelledby}\n className={clsx(styles.label, {\n [styles['label-enabled']]: !readOnly && !disabled,\n })}\n hideCaret={true}\n onClick={() => {\n if (!readOnly && !disabled) {\n setIsDropDownOpen(true);\n }\n }}\n disabled={disabled}\n readOnly={readOnly}\n ariaHasPopup=\"true\"\n >\n <span className={styles['trigger-flexbox']}>\n <span className={styles['icon-wrapper']}>\n <InternalIcon name=\"calendar\" variant={disabled || readOnly ? 'disabled' : 'normal'} />\n </span>\n {formatDateRange(value, placeholder ?? '', i18nStrings.formatRelativeRange, timeOffset)}\n </span>\n </ButtonTrigger>\n </div>\n );\n\n const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n return (\n <div\n {...baseProps}\n ref={mergedRef}\n className={clsx(baseProps.className, styles.root)}\n onKeyDown={onWrapperKeyDownHandler}\n >\n <Dropdown\n stretchWidth={true}\n stretchHeight={true}\n open={isDropDownOpen}\n onDropdownClose={() => closeDropdown()}\n trigger={trigger}\n stretchToTriggerWidth={false}\n expandToViewport={expandToViewport}\n dropdownId={dropdownId}\n >\n {isDropDownOpen && (\n <DateRangePickerDropdown\n startOfWeek={startOfWeek}\n locale={normalizedLocale}\n isSingleGrid={isSingleGrid}\n onDropdownClose={() => closeDropdown(true)}\n value={value}\n showClearButton={showClearButton}\n isDateEnabled={isDateEnabled}\n i18nStrings={i18nStrings}\n onClear={onClear}\n onApply={onApply}\n relativeOptions={relativeOptions}\n isValidRange={isValidRange}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n rangeSelectorMode={rangeSelectorMode}\n ariaLabelledby={ariaLabelledby}\n ariaDescribedby={ariaDescribedby}\n />\n )}\n </Dropdown>\n </div>\n );\n }\n);\n\napplyDisplayName(DateRangePicker, 'DateRangePicker');\nexport default DateRangePicker;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/date-range-picker/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, { Ref, useEffect, useRef, useState } from 'react';\nimport styles from './styles.css.js';\nimport { DateRangePickerProps } from './interfaces';\nimport { normalizeLocale } from '../date-picker/calendar/utils/locales';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { KeyCode } from '../internal/keycode';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport InternalBox from '../box/internal';\nimport { DateRangePickerDropdown } from './dropdown';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport Dropdown from '../internal/components/dropdown';\nimport { useFocusTracker } from '../internal/hooks/use-focus-tracker';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport ButtonTrigger from '../internal/components/button-trigger';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport InternalIcon from '../icon/internal';\nimport { shiftTimeOffset, setTimeOffset } from './time-offset';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { fireNonCancelableEvent } from '../internal/events/index.js';\nimport { isDevelopment } from '../internal/is-development.js';\nimport { warnOnce } from '../internal/logging.js';\nimport { usePrevious } from '../internal/hooks/use-previous/index.js';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { formatTimezoneOffset, getBrowserTimezoneOffset, isIsoDateOnly } from '../internal/utils/date-time';\n\nexport { DateRangePickerProps };\n\nfunction formatDateRange(\n range: null | DateRangePickerProps.Value,\n placeholder: string,\n formatRelativeRange: DateRangePickerProps.I18nStrings['formatRelativeRange'],\n timeOffset: number\n) {\n if (!range) {\n return (\n <span className={styles['label-text']} aria-disabled={true}>\n {placeholder}\n </span>\n );\n }\n\n const formatted =\n range.type === 'relative' ? (\n formatRelativeRange(range)\n ) : (\n <BreakSpaces text={formatAbsoluteRange(range, timeOffset)} />\n );\n\n return (\n <InternalBox fontWeight=\"normal\" display=\"inline\" color=\"inherit\">\n {formatted}\n </InternalBox>\n );\n}\n\nfunction BreakSpaces({ text }: { text: string }) {\n const tokens = text.split(/( )/);\n return (\n <div style={{ whiteSpace: 'nowrap' }}>\n {tokens.map((token, index) => (\n <React.Fragment key={index}>\n {token}\n {token === ' ' && <wbr />}\n </React.Fragment>\n ))}\n </div>\n );\n}\n\nfunction formatAbsoluteRange(value: DateRangePickerProps.AbsoluteValue, timeOffset: number): string {\n const formattedOffset = isDateOnly(value) ? '' : formatTimezoneOffset(timeOffset);\n return value.startDate + formattedOffset + ' ' + '—' + ' ' + value.endDate + formattedOffset;\n}\n\nfunction isDateOnly(value: null | DateRangePickerProps.Value) {\n if (!value || value.type !== 'absolute') {\n return false;\n }\n return isIsoDateOnly(value.startDate) && isIsoDateOnly(value.endDate);\n}\n\nfunction formatValue(\n value: null | DateRangePickerProps.Value,\n { timeOffset, dateOnly }: { timeOffset: number; dateOnly: boolean }\n): null | DateRangePickerProps.Value {\n if (!value || value.type === 'relative') {\n return value;\n }\n if (dateOnly) {\n return {\n type: 'absolute',\n startDate: value.startDate.split('T')[0],\n endDate: value.endDate.split('T')[0],\n };\n }\n return setTimeOffset(value, timeOffset);\n}\n\nconst DateRangePicker = React.forwardRef(\n (\n {\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n value,\n placeholder,\n readOnly = false,\n disabled = false,\n onChange,\n onBlur,\n onFocus,\n relativeOptions = [],\n i18nStrings,\n isValidRange = () => ({ valid: true }),\n showClearButton = true,\n dateOnly = false,\n timeOffset = getBrowserTimezoneOffset(),\n timeInputFormat = 'hh:mm:ss',\n expandToViewport = false,\n rangeSelectorMode = 'default',\n ...rest\n }: DateRangePickerProps,\n ref: Ref<DateRangePickerProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('DateRangePicker');\n checkControlled('DateRangePicker', 'value', value, 'onChange', onChange);\n\n value = isDateOnly(value) ? value : shiftTimeOffset(value, timeOffset);\n\n const baseProps = getBaseProps(rest);\n const { invalid, controlId, ariaDescribedby, ariaLabelledby } = useFormFieldContext({\n ariaLabelledby: rest.ariaLabelledby ?? i18nStrings.ariaLabelledby,\n ariaDescribedby: rest.ariaDescribedby ?? i18nStrings.ariaDescribedby,\n ...rest,\n });\n const isSingleGrid = useMobile();\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n useForwardFocus(ref, triggerRef);\n\n const rootRef = useRef<HTMLDivElement>(null);\n const dropdownId = useUniqueId('date-range-picker-dropdown');\n\n useFocusTracker({ rootRef, onBlur, onFocus, viewportId: expandToViewport ? dropdownId : '' });\n\n const [isDropDownOpen, setIsDropDownOpen] = useState<boolean>(false);\n\n const normalizedLocale = normalizeLocale('DateRangePicker', locale ?? '');\n\n const closeDropdown = (focusTrigger = false) => {\n setIsDropDownOpen(false);\n if (focusTrigger) {\n triggerRef.current?.focus();\n }\n };\n\n const onWrapperKeyDownHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.keyCode === KeyCode.escape) {\n closeDropdown(true);\n }\n };\n\n const onClear = () => {\n fireNonCancelableEvent(onChange, { value: null });\n };\n\n const onApply = (newValue: null | DateRangePickerProps.Value): DateRangePickerProps.ValidationResult => {\n const validationResult = isValidRange(newValue);\n if (validationResult?.valid === false) {\n return validationResult;\n }\n\n if (isDevelopment) {\n if (newValue?.type === 'absolute') {\n const [startDateWithoutTime] = newValue.startDate.split('T');\n const [endDateWithoutTime] = newValue.endDate.split('T');\n if (!startDateWithoutTime || !endDateWithoutTime) {\n warnOnce(\n 'DateRangePicker',\n 'You have provided an `isValidRange` prop that did not catch a missing start or end date.'\n );\n }\n }\n }\n fireNonCancelableEvent(onChange, { value: formatValue(newValue, { dateOnly, timeOffset }) });\n return validationResult || { valid: true };\n };\n\n const prevDateOnly = usePrevious(dateOnly);\n useEffect(() => {\n if (prevDateOnly !== undefined && prevDateOnly !== dateOnly) {\n warnOnce(\n 'DateRangePicker',\n `The provided \\`dateOnly\\` flag has been changed from \"${prevDateOnly}\" to \"${dateOnly}\" which can lead to unexpected value format. Consider using separate components.`\n );\n }\n }, [prevDateOnly, dateOnly]);\n\n if (value && value.type !== 'absolute' && value.type !== 'relative') {\n warnOnce('DateRangePicker', 'You provided an invalid value. Reverting back to default.');\n value = null;\n }\n\n if (\n (value?.type === 'absolute' && rangeSelectorMode === 'relative-only') ||\n (value?.type === 'relative' && rangeSelectorMode === 'absolute-only')\n ) {\n warnOnce(\n 'DateRangePicker',\n 'The provided value does not correspond to the current range selector mode. Reverting back to default.'\n );\n value = null;\n }\n\n const trigger = (\n <div className={styles['trigger-wrapper']}>\n <ButtonTrigger\n ref={triggerRef}\n id={controlId}\n invalid={invalid}\n ariaLabel={i18nStrings.ariaLabel}\n ariaDescribedby={ariaDescribedby}\n ariaLabelledby={ariaLabelledby}\n className={clsx(styles.label, {\n [styles['label-enabled']]: !readOnly && !disabled,\n })}\n hideCaret={true}\n onClick={() => {\n if (!readOnly && !disabled) {\n setIsDropDownOpen(true);\n }\n }}\n disabled={disabled}\n readOnly={readOnly}\n ariaHasPopup=\"true\"\n >\n <span className={styles['trigger-flexbox']}>\n <span className={styles['icon-wrapper']}>\n <InternalIcon name=\"calendar\" variant={disabled || readOnly ? 'disabled' : 'normal'} />\n </span>\n {formatDateRange(value, placeholder ?? '', i18nStrings.formatRelativeRange, timeOffset)}\n </span>\n </ButtonTrigger>\n </div>\n );\n\n const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n return (\n <div\n {...baseProps}\n ref={mergedRef}\n className={clsx(baseProps.className, styles.root)}\n onKeyDown={onWrapperKeyDownHandler}\n >\n <Dropdown\n stretchWidth={true}\n stretchHeight={true}\n open={isDropDownOpen}\n onDropdownClose={() => closeDropdown()}\n trigger={trigger}\n stretchToTriggerWidth={false}\n expandToViewport={expandToViewport}\n dropdownId={dropdownId}\n >\n {isDropDownOpen && (\n <DateRangePickerDropdown\n startOfWeek={startOfWeek}\n locale={normalizedLocale}\n isSingleGrid={isSingleGrid}\n onDropdownClose={() => closeDropdown(true)}\n value={value}\n showClearButton={showClearButton}\n isDateEnabled={isDateEnabled}\n i18nStrings={i18nStrings}\n onClear={onClear}\n onApply={onApply}\n relativeOptions={relativeOptions}\n isValidRange={isValidRange}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n rangeSelectorMode={rangeSelectorMode}\n ariaLabelledby={ariaLabelledby}\n ariaDescribedby={ariaDescribedby}\n />\n )}\n </Dropdown>\n </div>\n );\n }\n);\n\napplyDisplayName(DateRangePicker, 'DateRangePicker');\nexport default DateRangePicker;\n"]}
@@ -1,15 +1,8 @@
1
1
  import { DateRangePickerProps } from './interfaces';
2
- /**
3
- * Returns the time offset of the browser.
4
- *
5
- * I.e. determines the `x` in `current offset = UTC + x`
6
- */
7
- export declare function getBrowserTimezoneOffset(): number;
8
2
  /**
9
3
  * Appends a time zone offset to an offset-less date string.
10
4
  */
11
5
  export declare function setTimeOffset(value: DateRangePickerProps.Value | null, timeOffsetInMinutes: number): DateRangePickerProps.Value | null;
12
- export declare function formatOffset(offsetInMinutes: number): string;
13
6
  /**
14
7
  * Re-formats an absolute date range so that it is expressed using the
15
8
  * target time offset. The returned value still represents the same range
@@ -1 +1 @@
1
- {"version":3,"file":"time-offset.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/time-offset.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMpD;;;;GAIG;AACH,wBAAgB,wBAAwB,WAEvC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,CAAC,KAAK,GAAG,IAAI,EACxC,mBAAmB,EAAE,MAAM,GAC1B,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAcnC;AAED,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,UAQnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,EACxC,mBAAmB,EAAE,MAAM,GAC1B,oBAAoB,CAAC,KAAK,GAAG,IAAI,CA2BnC"}
1
+ {"version":3,"file":"time-offset.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/time-offset.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIpD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,CAAC,KAAK,GAAG,IAAI,EACxC,mBAAmB,EAAE,MAAM,GAC1B,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAcnC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,EACxC,mBAAmB,EAAE,MAAM,GAC1B,oBAAoB,CAAC,KAAK,GAAG,IAAI,CA2BnC"}
@@ -1,15 +1,5 @@
1
- import { padLeftZeros } from '../internal/components/masked-input/utils/strings';
2
- import { addMinutes } from 'date-fns';
3
- import { formatTime, formatDate } from '../date-picker/calendar/utils/date';
4
1
  import { warnOnce } from '../internal/logging';
5
- /**
6
- * Returns the time offset of the browser.
7
- *
8
- * I.e. determines the `x` in `current offset = UTC + x`
9
- */
10
- export function getBrowserTimezoneOffset() {
11
- return 0 - new Date().getTimezoneOffset();
12
- }
2
+ import { formatTimezoneOffset, shiftTimezoneOffset } from '../internal/utils/date-time';
13
3
  /**
14
4
  * Appends a time zone offset to an offset-less date string.
15
5
  */
@@ -17,7 +7,7 @@ export function setTimeOffset(value, timeOffsetInMinutes) {
17
7
  if (!((value === null || value === void 0 ? void 0 : value.type) === 'absolute')) {
18
8
  return value;
19
9
  }
20
- var offsetSuffix = formatOffset(timeOffsetInMinutes);
10
+ var offsetSuffix = formatTimezoneOffset(timeOffsetInMinutes);
21
11
  var startDate = value.startDate, endDate = value.endDate;
22
12
  return {
23
13
  type: 'absolute',
@@ -25,13 +15,6 @@ export function setTimeOffset(value, timeOffsetInMinutes) {
25
15
  endDate: endDate + offsetSuffix
26
16
  };
27
17
  }
28
- export function formatOffset(offsetInMinutes) {
29
- var hoursOffset = padLeftZeros(Math.floor(Math.abs(offsetInMinutes) / 60).toFixed(0), 2);
30
- var minuteOffset = padLeftZeros(Math.abs(offsetInMinutes % 60).toFixed(0), 2);
31
- var sign = offsetInMinutes < 0 ? '-' : '+';
32
- var offsetSuffix = "".concat(sign).concat(hoursOffset, ":").concat(minuteOffset);
33
- return offsetSuffix;
34
- }
35
18
  /**
36
19
  * Re-formats an absolute date range so that it is expressed using the
37
20
  * target time offset. The returned value still represents the same range
@@ -55,47 +38,8 @@ export function shiftTimeOffset(value, timeOffsetInMinutes) {
55
38
  }
56
39
  return {
57
40
  type: 'absolute',
58
- startDate: doShiftTimeOffset(value.startDate, timeOffsetInMinutes),
59
- endDate: doShiftTimeOffset(value.endDate, timeOffsetInMinutes)
41
+ startDate: shiftTimezoneOffset(value.startDate, timeOffsetInMinutes),
42
+ endDate: shiftTimezoneOffset(value.endDate, timeOffsetInMinutes)
60
43
  };
61
44
  }
62
- /**
63
- * Re-formats an ISO8601 date string so that it is expressed using the
64
- * target time offset. The returned date string still represents the
65
- * same instant in time, but contains no visible offset.
66
- *
67
- * Example:
68
- * ```
69
- * doShiftTimeOffset("2020-01-01T09:00:00+03:00", 2 * 60)
70
- * = "2020-01-01T08:00:00"
71
- * ```
72
- */
73
- function doShiftTimeOffset(value, targetOffsetInMinutes) {
74
- var _a = splitOffset(value), valueWithoutOffset = _a[0], offsetInMinutes = _a[1];
75
- var differenceBetweenValueAndTarget = targetOffsetInMinutes - offsetInMinutes;
76
- var date = new Date(valueWithoutOffset);
77
- var adjustedDate = addMinutes(date, differenceBetweenValueAndTarget);
78
- var formattedDate = formatDate(adjustedDate);
79
- var formattedTime = formatTime(adjustedDate);
80
- return "".concat(formattedDate, "T").concat(formattedTime);
81
- }
82
- /**
83
- * Splits an ISO8601 date string into its timezone-independent part
84
- * and its time offset in minutes.
85
- */
86
- function splitOffset(value) {
87
- var _a = value.split('T'), datePart = _a[0], timePart = _a[1];
88
- var _b = timePart.split(/(-|\+)/), time = _b[0], signCharacter = _b[1], offsetPart = _b[2];
89
- if (signCharacter && offsetPart) {
90
- var _c = offsetPart.split(':'), offsetHours = _c[0], offsetMinutes = _c[1];
91
- var offset = Number(offsetHours) * 60 + Number(offsetMinutes);
92
- var sign = signCharacter === '-' ? -1 : 1;
93
- return ["".concat(datePart, "T").concat(time), offset * sign];
94
- }
95
- var utcTimezoneIndicator = value.indexOf('Z');
96
- if (utcTimezoneIndicator !== -1) {
97
- return [value.substring(0, utcTimezoneIndicator), 0];
98
- }
99
- return [value, getBrowserTimezoneOffset()];
100
- }
101
45
  //# sourceMappingURL=time-offset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-offset.js","sourceRoot":"","sources":["../../../src/date-range-picker/time-offset.ts"],"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 { DateRangePickerProps } from './interfaces';\nimport { padLeftZeros } from '../internal/components/masked-input/utils/strings';\nimport { addMinutes } from 'date-fns';\nimport { formatTime, formatDate } from '../date-picker/calendar/utils/date';\nimport { warnOnce } from '../internal/logging';\n\n/**\n * Returns the time offset of the browser.\n *\n * I.e. determines the `x` in `current offset = UTC + x`\n */\nexport function getBrowserTimezoneOffset() {\n return 0 - new Date().getTimezoneOffset();\n}\n\n/**\n * Appends a time zone offset to an offset-less date string.\n */\nexport function setTimeOffset(\n value: DateRangePickerProps.Value | null,\n timeOffsetInMinutes: number\n): DateRangePickerProps.Value | null {\n if (!(value?.type === 'absolute')) {\n return value;\n }\n\n const offsetSuffix = formatOffset(timeOffsetInMinutes);\n\n const { startDate, endDate } = value;\n\n return {\n type: 'absolute',\n startDate: startDate + offsetSuffix,\n endDate: endDate + offsetSuffix,\n };\n}\n\nexport function formatOffset(offsetInMinutes: number) {\n const hoursOffset = padLeftZeros(Math.floor(Math.abs(offsetInMinutes) / 60).toFixed(0), 2);\n const minuteOffset = padLeftZeros(Math.abs(offsetInMinutes % 60).toFixed(0), 2);\n\n const sign = offsetInMinutes < 0 ? '-' : '+';\n const offsetSuffix = `${sign}${hoursOffset}:${minuteOffset}`;\n\n return offsetSuffix;\n}\n\n/**\n * Re-formats an absolute date range so that it is expressed using the\n * target time offset. The returned value still represents the same range\n * in time, but contains no visible offset.\n */\nexport function shiftTimeOffset(\n value: null | DateRangePickerProps.Value,\n timeOffsetInMinutes: number\n): DateRangePickerProps.Value | null {\n if (!value || value.type !== 'absolute') {\n return value;\n }\n\n /*\n This regex matches an ISO date-time with\n - optional seconds;\n - optional milliseconds;\n - optional time offset or 'Z'.\n */\n const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d{1,3})?(((\\+|-)\\d{2}(:\\d{2})?)|Z)?$/;\n\n if (!dateTimeRegex.test(value.startDate) || !dateTimeRegex.test(value.endDate)) {\n warnOnce(\n 'DateRangePicker',\n 'You have provided a misformatted start or end date. The component will fall back to an empty value. ' +\n 'Dates have to be ISO8601-formatted with an optional time zone offset.'\n );\n return null;\n }\n\n return {\n type: 'absolute',\n startDate: doShiftTimeOffset(value.startDate, timeOffsetInMinutes),\n endDate: doShiftTimeOffset(value.endDate, timeOffsetInMinutes),\n };\n}\n\n/**\n * Re-formats an ISO8601 date string so that it is expressed using the\n * target time offset. The returned date string still represents the\n * same instant in time, but contains no visible offset.\n *\n * Example:\n * ```\n * doShiftTimeOffset(\"2020-01-01T09:00:00+03:00\", 2 * 60)\n * = \"2020-01-01T08:00:00\"\n * ```\n */\nfunction doShiftTimeOffset(value: string, targetOffsetInMinutes: number) {\n const [valueWithoutOffset, offsetInMinutes] = splitOffset(value);\n\n const differenceBetweenValueAndTarget = targetOffsetInMinutes - offsetInMinutes;\n\n const date = new Date(valueWithoutOffset);\n const adjustedDate = addMinutes(date, differenceBetweenValueAndTarget);\n\n const formattedDate = formatDate(adjustedDate);\n const formattedTime = formatTime(adjustedDate);\n\n return `${formattedDate}T${formattedTime}`;\n}\n\n/**\n * Splits an ISO8601 date string into its timezone-independent part\n * and its time offset in minutes.\n */\nfunction splitOffset(value: string) {\n const [datePart, timePart] = value.split('T');\n const [time, signCharacter, offsetPart] = timePart.split(/(-|\\+)/);\n\n if (signCharacter && offsetPart) {\n const [offsetHours, offsetMinutes] = offsetPart.split(':');\n\n const offset = Number(offsetHours) * 60 + Number(offsetMinutes);\n\n const sign = signCharacter === '-' ? -1 : 1;\n\n return [`${datePart}T${time}`, offset * sign] as const;\n }\n\n const utcTimezoneIndicator = value.indexOf('Z');\n if (utcTimezoneIndicator !== -1) {\n return [value.substring(0, utcTimezoneIndicator), 0] as const;\n }\n\n return [value, getBrowserTimezoneOffset()] as const;\n}\n"]}
1
+ {"version":3,"file":"time-offset.js","sourceRoot":"","sources":["../../../src/date-range-picker/time-offset.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAExF;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAwC,EACxC,mBAA2B;IAE3B,IAAI,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,UAAU,CAAC,EAAE;QACjC,OAAO,KAAK,CAAC;KACd;IAED,IAAM,YAAY,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAEvD,IAAA,SAAS,GAAc,KAAK,UAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;IAErC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,SAAS,GAAG,YAAY;QACnC,OAAO,EAAE,OAAO,GAAG,YAAY;KAChC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAwC,EACxC,mBAA2B;IAE3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QACvC,OAAO,KAAK,CAAC;KACd;IAED;;;;;MAKE;IACF,IAAM,aAAa,GAAG,iFAAiF,CAAC;IAExG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC9E,QAAQ,CACN,iBAAiB,EACjB,sGAAsG;YACpG,uEAAuE,CAC1E,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC;QACpE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC;KACjE,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DateRangePickerProps } from './interfaces';\nimport { warnOnce } from '../internal/logging';\nimport { formatTimezoneOffset, shiftTimezoneOffset } from '../internal/utils/date-time';\n\n/**\n * Appends a time zone offset to an offset-less date string.\n */\nexport function setTimeOffset(\n value: DateRangePickerProps.Value | null,\n timeOffsetInMinutes: number\n): DateRangePickerProps.Value | null {\n if (!(value?.type === 'absolute')) {\n return value;\n }\n\n const offsetSuffix = formatTimezoneOffset(timeOffsetInMinutes);\n\n const { startDate, endDate } = value;\n\n return {\n type: 'absolute',\n startDate: startDate + offsetSuffix,\n endDate: endDate + offsetSuffix,\n };\n}\n\n/**\n * Re-formats an absolute date range so that it is expressed using the\n * target time offset. The returned value still represents the same range\n * in time, but contains no visible offset.\n */\nexport function shiftTimeOffset(\n value: null | DateRangePickerProps.Value,\n timeOffsetInMinutes: number\n): DateRangePickerProps.Value | null {\n if (!value || value.type !== 'absolute') {\n return value;\n }\n\n /*\n This regex matches an ISO date-time with\n - optional seconds;\n - optional milliseconds;\n - optional time offset or 'Z'.\n */\n const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d{1,3})?(((\\+|-)\\d{2}(:\\d{2})?)|Z)?$/;\n\n if (!dateTimeRegex.test(value.startDate) || !dateTimeRegex.test(value.endDate)) {\n warnOnce(\n 'DateRangePicker',\n 'You have provided a misformatted start or end date. The component will fall back to an empty value. ' +\n 'Dates have to be ISO8601-formatted with an optional time zone offset.'\n );\n return null;\n }\n\n return {\n type: 'absolute',\n startDate: shiftTimezoneOffset(value.startDate, timeOffsetInMinutes),\n endDate: shiftTimezoneOffset(value.endDate, timeOffsetInMinutes),\n };\n}\n"]}
@@ -19,7 +19,7 @@ export default function Flashbar(_a) {
19
19
  var items = _a.items, restProps = __rest(_a, ["items"]);
20
20
  var __internalRootRef = useBaseComponent('Flashbar').__internalRootRef;
21
21
  var _b = useContainerBreakpoints(['xs']), breakpoint = _b[0], ref = _b[1];
22
- var isRefresh = useVisualRefresh(__internalRootRef);
22
+ var isRefresh = useVisualRefresh();
23
23
  var baseProps = getBaseProps(restProps);
24
24
  var mergedRef = useMergeRefs(ref, __internalRootRef);
25
25
  // All the flash items should have ids so we can identify which DOM element is being removed from the DOM to animate it.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/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 clsx from 'clsx';\nimport React from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { Flash } from './flash';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport VisualContext from '../internal/components/visual-context';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { FlashbarProps } from './interfaces';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';\n\nexport { FlashbarProps };\n\nexport default function Flashbar({ items, ...restProps }: FlashbarProps) {\n const { __internalRootRef } = useBaseComponent('Flashbar');\n const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n const isRefresh = useVisualRefresh(__internalRootRef);\n const baseProps = getBaseProps(restProps);\n\n const mergedRef = useMergeRefs(ref, __internalRootRef);\n\n // All the flash items should have ids so we can identify which DOM element is being removed from the DOM to animate it.\n const motionDisabled = useReducedMotion(ref as any) || !isRefresh || (items && !items.every(item => 'id' in item));\n // Motion will be disabled if any of the provided flash messages does not contain an `id`\n\n const renderFlashItem = (item: FlashbarProps.MessageDefinition, index: number) => (\n <Flash\n key={item.id ?? index}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(isRefresh ? styles['flash-refresh'] : '')}\n {...item}\n />\n );\n const renderFlashItemsWithTransitions = (items: readonly FlashbarProps.MessageDefinition[]) => {\n return (\n <>\n <TransitionGroup component={null}>\n {items &&\n items.map((item, index) => (\n <Transition\n transitionChangeDelay={{ entering: TIMEOUT_FOR_ENTERING_ANIMATION }}\n key={item.id ?? index}\n in={true}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n <Flash\n ref={transitionRootElement}\n key={item.id ?? index}\n transitionState={state}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(isRefresh ? styles['flash-refresh'] : '')}\n {...item}\n />\n )}\n </Transition>\n ))}\n </TransitionGroup>\n </>\n );\n };\n return (\n <div\n {...baseProps}\n className={clsx(baseProps.className, styles.flashbar, styles[`breakpoint-${breakpoint}`])}\n ref={mergedRef}\n >\n <VisualContext contextName=\"flashbar\">\n {items && (\n <>\n {motionDisabled\n ? items.map((item, index) => renderFlashItem(item, index))\n : renderFlashItemsWithTransitions(items)}\n </>\n )}\n </VisualContext>\n </div>\n );\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/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 clsx from 'clsx';\nimport React from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { Flash } from './flash';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport VisualContext from '../internal/components/visual-context';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { FlashbarProps } from './interfaces';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';\n\nexport { FlashbarProps };\n\nexport default function Flashbar({ items, ...restProps }: FlashbarProps) {\n const { __internalRootRef } = useBaseComponent('Flashbar');\n const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n const isRefresh = useVisualRefresh();\n const baseProps = getBaseProps(restProps);\n\n const mergedRef = useMergeRefs(ref, __internalRootRef);\n\n // All the flash items should have ids so we can identify which DOM element is being removed from the DOM to animate it.\n const motionDisabled = useReducedMotion(ref as any) || !isRefresh || (items && !items.every(item => 'id' in item));\n // Motion will be disabled if any of the provided flash messages does not contain an `id`\n\n const renderFlashItem = (item: FlashbarProps.MessageDefinition, index: number) => (\n <Flash\n key={item.id ?? index}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(isRefresh ? styles['flash-refresh'] : '')}\n {...item}\n />\n );\n const renderFlashItemsWithTransitions = (items: readonly FlashbarProps.MessageDefinition[]) => {\n return (\n <>\n <TransitionGroup component={null}>\n {items &&\n items.map((item, index) => (\n <Transition\n transitionChangeDelay={{ entering: TIMEOUT_FOR_ENTERING_ANIMATION }}\n key={item.id ?? index}\n in={true}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n <Flash\n ref={transitionRootElement}\n key={item.id ?? index}\n transitionState={state}\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(isRefresh ? styles['flash-refresh'] : '')}\n {...item}\n />\n )}\n </Transition>\n ))}\n </TransitionGroup>\n </>\n );\n };\n return (\n <div\n {...baseProps}\n className={clsx(baseProps.className, styles.flashbar, styles[`breakpoint-${breakpoint}`])}\n ref={mergedRef}\n >\n <VisualContext contextName=\"flashbar\">\n {items && (\n <>\n {motionDisabled\n ? items.map((item, index) => renderFlashItem(item, index))\n : renderFlashItemsWithTransitions(items)}\n </>\n )}\n </VisualContext>\n </div>\n );\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}