@cloudscape-design/components 3.0.882 → 3.0.884

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 (158) hide show
  1. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
  3. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  4. package/breadcrumb-group/item/item.d.ts.map +1 -1
  5. package/breadcrumb-group/item/item.js +1 -1
  6. package/breadcrumb-group/item/item.js.map +1 -1
  7. package/button/internal.d.ts.map +1 -1
  8. package/button/internal.js +1 -1
  9. package/button/internal.js.map +1 -1
  10. package/button-group/file-input-item.d.ts +5 -3
  11. package/button-group/file-input-item.d.ts.map +1 -1
  12. package/button-group/file-input-item.js +2 -2
  13. package/button-group/file-input-item.js.map +1 -1
  14. package/button-group/icon-button-item.d.ts +5 -3
  15. package/button-group/icon-button-item.d.ts.map +1 -1
  16. package/button-group/icon-button-item.js +2 -2
  17. package/button-group/icon-button-item.js.map +1 -1
  18. package/button-group/icon-toggle-button-item.d.ts +5 -3
  19. package/button-group/icon-toggle-button-item.d.ts.map +1 -1
  20. package/button-group/icon-toggle-button-item.js +2 -2
  21. package/button-group/icon-toggle-button-item.js.map +1 -1
  22. package/button-group/item-element.d.ts.map +1 -1
  23. package/button-group/item-element.js +4 -4
  24. package/button-group/item-element.js.map +1 -1
  25. package/button-group/menu-dropdown-item.d.ts +1 -0
  26. package/button-group/menu-dropdown-item.d.ts.map +1 -1
  27. package/button-group/menu-dropdown-item.js +2 -2
  28. package/button-group/menu-dropdown-item.js.map +1 -1
  29. package/calendar/grid/index.d.ts.map +1 -1
  30. package/calendar/grid/index.js +1 -1
  31. package/calendar/grid/index.js.map +1 -1
  32. package/date-range-picker/calendar/grids/grid-cell.d.ts.map +1 -1
  33. package/date-range-picker/calendar/grids/grid-cell.js +2 -2
  34. package/date-range-picker/calendar/grids/grid-cell.js.map +1 -1
  35. package/date-range-picker/calendar/grids/grid.d.ts +18 -0
  36. package/date-range-picker/calendar/grids/grid.d.ts.map +1 -0
  37. package/date-range-picker/calendar/grids/grid.js +174 -0
  38. package/date-range-picker/calendar/grids/grid.js.map +1 -0
  39. package/date-range-picker/calendar/grids/index.d.ts +3 -20
  40. package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  41. package/date-range-picker/calendar/grids/index.js +51 -22
  42. package/date-range-picker/calendar/grids/index.js.map +1 -1
  43. package/date-range-picker/calendar/grids/interfaces.d.ts +47 -0
  44. package/date-range-picker/calendar/grids/interfaces.d.ts.map +1 -0
  45. package/date-range-picker/calendar/grids/interfaces.js +2 -0
  46. package/date-range-picker/calendar/grids/interfaces.js.map +1 -0
  47. package/date-range-picker/calendar/grids/intl.d.ts +17 -0
  48. package/date-range-picker/calendar/grids/intl.d.ts.map +1 -0
  49. package/date-range-picker/calendar/grids/intl.js +56 -0
  50. package/date-range-picker/calendar/grids/intl.js.map +1 -0
  51. package/date-range-picker/calendar/grids/styles.css.js +30 -24
  52. package/date-range-picker/calendar/grids/styles.scoped.css +62 -46
  53. package/date-range-picker/calendar/grids/styles.selectors.js +30 -24
  54. package/date-range-picker/calendar/header/header-button.d.ts +5 -4
  55. package/date-range-picker/calendar/header/header-button.d.ts.map +1 -1
  56. package/date-range-picker/calendar/header/header-button.js +6 -6
  57. package/date-range-picker/calendar/header/header-button.js.map +1 -1
  58. package/date-range-picker/calendar/header/index.d.ts +6 -4
  59. package/date-range-picker/calendar/header/index.d.ts.map +1 -1
  60. package/date-range-picker/calendar/header/index.js +18 -13
  61. package/date-range-picker/calendar/header/index.js.map +1 -1
  62. package/date-range-picker/calendar/index.d.ts +2 -1
  63. package/date-range-picker/calendar/index.d.ts.map +1 -1
  64. package/date-range-picker/calendar/index.js +49 -41
  65. package/date-range-picker/calendar/index.js.map +1 -1
  66. package/date-range-picker/calendar/range-inputs.d.ts +4 -3
  67. package/date-range-picker/calendar/range-inputs.d.ts.map +1 -1
  68. package/date-range-picker/calendar/range-inputs.js +23 -10
  69. package/date-range-picker/calendar/range-inputs.js.map +1 -1
  70. package/date-range-picker/calendar/utils.d.ts +2 -0
  71. package/date-range-picker/calendar/utils.d.ts.map +1 -1
  72. package/date-range-picker/calendar/utils.js +27 -1
  73. package/date-range-picker/calendar/utils.js.map +1 -1
  74. package/date-range-picker/dropdown.d.ts +3 -2
  75. package/date-range-picker/dropdown.d.ts.map +1 -1
  76. package/date-range-picker/dropdown.js +17 -12
  77. package/date-range-picker/dropdown.js.map +1 -1
  78. package/date-range-picker/index.d.ts.map +1 -1
  79. package/date-range-picker/index.js +17 -8
  80. package/date-range-picker/index.js.map +1 -1
  81. package/date-range-picker/interfaces.d.ts +89 -14
  82. package/date-range-picker/interfaces.d.ts.map +1 -1
  83. package/date-range-picker/interfaces.js.map +1 -1
  84. package/date-range-picker/mode-switcher.js +2 -2
  85. package/date-range-picker/mode-switcher.js.map +1 -1
  86. package/date-range-picker/relative-range/index.d.ts +2 -1
  87. package/date-range-picker/relative-range/index.d.ts.map +1 -1
  88. package/date-range-picker/relative-range/index.js +14 -8
  89. package/date-range-picker/relative-range/index.js.map +1 -1
  90. package/date-range-picker/relative-range/styles.css.js +6 -9
  91. package/date-range-picker/relative-range/styles.scoped.css +10 -19
  92. package/date-range-picker/relative-range/styles.selectors.js +6 -9
  93. package/date-range-picker/styles.css.js +23 -38
  94. package/date-range-picker/styles.scoped.css +32 -78
  95. package/date-range-picker/styles.selectors.js +23 -38
  96. package/date-range-picker/test-classes/styles.css.js +36 -2
  97. package/date-range-picker/test-classes/styles.scoped.css +36 -2
  98. package/date-range-picker/test-classes/styles.selectors.js +36 -2
  99. package/date-range-picker/utils.d.ts +9 -11
  100. package/date-range-picker/utils.d.ts.map +1 -1
  101. package/date-range-picker/utils.js +43 -32
  102. package/date-range-picker/utils.js.map +1 -1
  103. package/file-token-group/file-token.d.ts.map +1 -1
  104. package/file-token-group/file-token.js +1 -1
  105. package/file-token-group/file-token.js.map +1 -1
  106. package/i18n/messages/all.all.js +1 -1
  107. package/i18n/messages/all.all.json +1 -1
  108. package/i18n/messages/all.en.js +1 -1
  109. package/i18n/messages/all.en.json +1 -1
  110. package/i18n/messages-types.d.ts +9 -0
  111. package/i18n/messages-types.d.ts.map +1 -1
  112. package/i18n/messages-types.js.map +1 -1
  113. package/internal/components/tooltip/index.d.ts +2 -1
  114. package/internal/components/tooltip/index.d.ts.map +1 -1
  115. package/internal/components/tooltip/index.js +21 -2
  116. package/internal/components/tooltip/index.js.map +1 -1
  117. package/internal/environment.js +1 -1
  118. package/internal/environment.json +1 -1
  119. package/internal/manifest.json +1 -1
  120. package/internal/utils/date-time/calendar.d.ts +22 -6
  121. package/internal/utils/date-time/calendar.d.ts.map +1 -1
  122. package/internal/utils/date-time/calendar.js +62 -11
  123. package/internal/utils/date-time/calendar.js.map +1 -1
  124. package/multiselect/index.d.ts.map +1 -1
  125. package/multiselect/index.js +2 -3
  126. package/multiselect/index.js.map +1 -1
  127. package/package.json +1 -1
  128. package/progress-bar/index.d.ts.map +1 -1
  129. package/progress-bar/index.js +4 -3
  130. package/progress-bar/index.js.map +1 -1
  131. package/progress-bar/internal.js +2 -2
  132. package/progress-bar/internal.js.map +1 -1
  133. package/segmented-control/segment.d.ts.map +1 -1
  134. package/segmented-control/segment.js +1 -1
  135. package/segmented-control/segment.js.map +1 -1
  136. package/select/parts/item.d.ts.map +1 -1
  137. package/select/parts/item.js +4 -2
  138. package/select/parts/item.js.map +1 -1
  139. package/select/parts/multiselect-item.d.ts.map +1 -1
  140. package/select/parts/multiselect-item.js +4 -2
  141. package/select/parts/multiselect-item.js.map +1 -1
  142. package/slider/internal.d.ts.map +1 -1
  143. package/slider/internal.js +1 -1
  144. package/slider/internal.js.map +1 -1
  145. package/tabs/tab-header-bar.d.ts.map +1 -1
  146. package/tabs/tab-header-bar.js +1 -1
  147. package/tabs/tab-header-bar.js.map +1 -1
  148. package/test-utils/dom/date-range-picker/index.d.ts +26 -0
  149. package/test-utils/dom/date-range-picker/index.js +58 -24
  150. package/test-utils/dom/date-range-picker/index.js.map +1 -1
  151. package/test-utils/selectors/date-range-picker/index.d.ts +26 -0
  152. package/test-utils/selectors/date-range-picker/index.js +58 -24
  153. package/test-utils/selectors/date-range-picker/index.js.map +1 -1
  154. package/test-utils/tsconfig.tsbuildinfo +1 -1
  155. package/date-range-picker/calendar/grids/monthly-grid.d.ts +0 -39
  156. package/date-range-picker/calendar/grids/monthly-grid.d.ts.map +0 -1
  157. package/date-range-picker/calendar/grids/monthly-grid.js +0 -97
  158. package/date-range-picker/calendar/grids/monthly-grid.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"range-inputs.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/range-inputs.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport InternalDateInput from '../../date-input/internal';\nimport InternalFormField from '../../form-field/internal';\nimport { useInternalI18n } from '../../i18n/context.js';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport InternalTimeInput from '../../time-input/internal';\nimport { RangeCalendarI18nStrings } from '../interfaces';\n\nimport styles from '../styles.css.js';\n\ntype I18nStrings = Pick<\n RangeCalendarI18nStrings,\n 'dateTimeConstraintText' | 'startDateLabel' | 'startTimeLabel' | 'endDateLabel' | 'endTimeLabel'\n>;\n\ninterface RangeInputsProps extends BaseComponentProps {\n startDate: string;\n onChangeStartDate: (value: string) => void;\n startTime: string;\n onChangeStartTime: (value: string) => void;\n endDate: string;\n onChangeEndDate: (value: string) => void;\n endTime: string;\n onChangeEndTime: (value: string) => void;\n i18nStrings?: I18nStrings;\n dateOnly: boolean;\n timeInputFormat: TimeInputProps.Format;\n}\n\nexport default function RangeInputs({\n startDate,\n onChangeStartDate,\n startTime,\n onChangeStartTime,\n endDate,\n onChangeEndDate,\n endTime,\n onChangeEndTime,\n i18nStrings,\n dateOnly,\n timeInputFormat,\n}: RangeInputsProps) {\n const i18n = useInternalI18n('date-range-picker');\n\n return (\n <InternalFormField constraintText={i18n('i18nStrings.dateTimeConstraintText', i18nStrings?.dateTimeConstraintText)}>\n <div className={styles['date-and-time-container']}>\n <div className={styles['date-and-time-wrapper']}>\n <InternalFormField label={i18n('i18nStrings.startDateLabel', i18nStrings?.startDateLabel)} stretch={true}>\n <InternalDateInput\n value={startDate}\n className={styles['start-date-input']}\n onChange={event => onChangeStartDate(event.detail.value)}\n placeholder=\"YYYY/MM/DD\"\n />\n </InternalFormField>\n {!dateOnly && (\n <InternalFormField label={i18n('i18nStrings.startTimeLabel', i18nStrings?.startTimeLabel)} stretch={true}>\n <InternalTimeInput\n value={startTime}\n onChange={event => onChangeStartTime(event.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['start-time-input']}\n />\n </InternalFormField>\n )}\n </div>\n\n <div className={styles['date-and-time-wrapper']}>\n <InternalFormField label={i18n('i18nStrings.endDateLabel', i18nStrings?.endDateLabel)} stretch={true}>\n <InternalDateInput\n value={endDate}\n className={styles['end-date-input']}\n onChange={event => onChangeEndDate(event.detail.value)}\n placeholder=\"YYYY/MM/DD\"\n />\n </InternalFormField>\n {!dateOnly && (\n <InternalFormField label={i18n('i18nStrings.endTimeLabel', i18nStrings?.endTimeLabel)} stretch={true}>\n <InternalTimeInput\n value={endTime}\n onChange={event => onChangeEndTime(event.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={styles['end-time-input']}\n />\n </InternalFormField>\n )}\n </div>\n </div>\n </InternalFormField>\n );\n}\n"]}
1
+ {"version":3,"file":"range-inputs.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/range-inputs.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport InternalDateInput from '../../date-input/internal';\nimport InternalFormField from '../../form-field/internal';\nimport { useInternalI18n } from '../../i18n/context.js';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport InternalTimeInput from '../../time-input/internal';\nimport { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';\n\nimport styles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\ntype I18nStrings = Pick<\n RangeCalendarI18nStrings,\n | 'dateConstraintText'\n | 'dateTimeConstraintText'\n | 'monthConstraintText'\n | 'startMonthLabel'\n | 'startDateLabel'\n | 'startTimeLabel'\n | 'endMonthLabel'\n | 'endDateLabel'\n | 'endTimeLabel'\n>;\n\ninterface RangeInputsProps extends BaseComponentProps {\n startDate: string;\n onChangeStartDate: (value: string) => void;\n startTime: string;\n onChangeStartTime: (value: string) => void;\n endDate: string;\n onChangeEndDate: (value: string) => void;\n endTime: string;\n onChangeEndTime: (value: string) => void;\n i18nStrings?: I18nStrings;\n dateOnly: boolean;\n timeInputFormat: TimeInputProps.Format;\n granularity?: DateRangePickerProps.Granularity;\n}\n\nexport default function RangeInputs({\n startDate,\n onChangeStartDate,\n startTime,\n onChangeStartTime,\n endDate,\n onChangeEndDate,\n endTime,\n onChangeEndTime,\n i18nStrings,\n dateOnly,\n timeInputFormat,\n granularity = 'day',\n}: RangeInputsProps) {\n const i18n = useInternalI18n('date-range-picker');\n const isMonthPicker = granularity === 'month';\n const dateInputPlaceholder = isMonthPicker ? 'YYYY/MM' : 'YYYY/MM/DD';\n const showTimeInput = !dateOnly && !isMonthPicker;\n\n return (\n <InternalFormField\n constraintText={i18n(\n isMonthPicker\n ? 'i18nStrings.monthConstraintText'\n : dateOnly\n ? 'i18nStrings.dateConstraintText'\n : 'i18nStrings.dateTimeConstraintText',\n isMonthPicker\n ? i18nStrings?.monthConstraintText\n : dateOnly\n ? i18nStrings?.dateConstraintText\n : i18nStrings?.dateTimeConstraintText\n )}\n >\n <div className={styles['date-and-time-container']}>\n <div className={styles['date-and-time-wrapper']}>\n <InternalFormField\n stretch={true}\n label={i18n(\n isMonthPicker ? 'i18nStrings.startMonthLabel' : 'i18nStrings.startDateLabel',\n isMonthPicker ? i18nStrings?.startMonthLabel : i18nStrings?.startDateLabel\n )}\n >\n <InternalDateInput\n value={startDate}\n className={clsx(testutilStyles['start-date-input'], isMonthPicker && testutilStyles['start-month-input'])}\n onChange={event => onChangeStartDate(event.detail.value)}\n placeholder={dateInputPlaceholder}\n granularity={granularity}\n />\n </InternalFormField>\n {showTimeInput && (\n <InternalFormField stretch={true} label={i18n('i18nStrings.startTimeLabel', i18nStrings?.startTimeLabel)}>\n <InternalTimeInput\n value={startTime}\n onChange={event => onChangeStartTime(event.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={testutilStyles['start-time-input']}\n />\n </InternalFormField>\n )}\n </div>\n\n <div className={styles['date-and-time-wrapper']}>\n <InternalFormField\n stretch={true}\n label={i18n(\n isMonthPicker ? 'i18nStrings.endMonthLabel' : 'i18nStrings.endDateLabel',\n isMonthPicker ? i18nStrings?.endMonthLabel : i18nStrings?.endDateLabel\n )}\n >\n <InternalDateInput\n value={endDate}\n className={clsx(testutilStyles['end-date-input'], isMonthPicker && testutilStyles['end-month-picker'])}\n onChange={event => onChangeEndDate(event.detail.value)}\n placeholder={dateInputPlaceholder}\n granularity={granularity}\n />\n </InternalFormField>\n {showTimeInput && (\n <InternalFormField label={i18n('i18nStrings.endTimeLabel', i18nStrings?.endTimeLabel)} stretch={true}>\n <InternalTimeInput\n value={endTime}\n onChange={event => onChangeEndTime(event.detail.value)}\n format={timeInputFormat}\n placeholder={timeInputFormat}\n className={testutilStyles['end-time-input']}\n />\n </InternalFormField>\n )}\n </div>\n </div>\n </InternalFormField>\n );\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  import { DateRangePickerProps } from '../interfaces';
2
2
  export declare function findDateToFocus(selected: Date | null, baseDate: Date, isDateEnabled: DateRangePickerProps.IsDateEnabledFunction): Date | null;
3
+ export declare function findMonthToFocus(selected: Date | null, baseDate: Date, isMonthEnabled: DateRangePickerProps.IsDateEnabledFunction): Date | null;
3
4
  export declare function findMonthToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean): Date;
5
+ export declare function findYearToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean): Date;
4
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,IAAI,GAAG,IAAI,EACrB,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,eAa1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,QAYzG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,IAAI,GAAG,IAAI,EACrB,QAAQ,EAAE,IAAI,EACd,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,eAa1D;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,IAAI,GAAG,IAAI,EACrB,QAAQ,EAAE,IAAI,EACd,cAAc,EAAE,oBAAoB,CAAC,qBAAqB,eAc3D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,QAYzG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,QAYxG"}
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { addMonths, isSameMonth, startOfMonth } from 'date-fns';
3
+ import { addMonths, addYears, isSameMonth, isSameYear, startOfMonth, startOfYear } from 'date-fns';
4
4
  import { parseDate } from '../../internal/utils/date-time';
5
5
  export function findDateToFocus(selected, baseDate, isDateEnabled) {
6
6
  if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {
@@ -15,6 +15,19 @@ export function findDateToFocus(selected, baseDate, isDateEnabled) {
15
15
  }
16
16
  return null;
17
17
  }
18
+ export function findMonthToFocus(selected, baseDate, isMonthEnabled) {
19
+ if (selected && isMonthEnabled(selected) && isSameYear(selected, baseDate)) {
20
+ return selected;
21
+ }
22
+ const today = new Date();
23
+ if (isMonthEnabled(today) && isSameYear(today, baseDate)) {
24
+ return today;
25
+ }
26
+ if (isMonthEnabled(baseDate)) {
27
+ return baseDate;
28
+ }
29
+ return null;
30
+ }
18
31
  export function findMonthToDisplay(value, isSingleGrid) {
19
32
  if (value.start.date) {
20
33
  const startDate = parseDate(value.start.date);
@@ -28,4 +41,17 @@ export function findMonthToDisplay(value, isSingleGrid) {
28
41
  }
29
42
  return startOfMonth(Date.now());
30
43
  }
44
+ export function findYearToDisplay(value, isSingleGrid) {
45
+ if (value.start.date) {
46
+ const startDate = parseDate(value.start.date);
47
+ if (isSingleGrid) {
48
+ return startOfYear(startDate);
49
+ }
50
+ return startOfYear(addYears(startDate, 1));
51
+ }
52
+ if (value.end.date) {
53
+ return startOfYear(parseDate(value.end.date));
54
+ }
55
+ return startOfYear(Date.now());
56
+ }
31
57
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,MAAM,UAAU,eAAe,CAC7B,QAAqB,EACrB,QAAc,EACd,aAAyD;IAEzD,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC1E,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QACxD,OAAO,KAAK,CAAC;KACd;IACD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgD,EAAE,YAAqB;IACxG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACpB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;SAChC;QACD,OAAO,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9C;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAClB,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { addMonths, isSameMonth, startOfMonth } from 'date-fns';\n\nimport { parseDate } from '../../internal/utils/date-time';\nimport { DateRangePickerProps } from '../interfaces';\n\nexport function findDateToFocus(\n selected: Date | null,\n baseDate: Date,\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction\n) {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n}\n\nexport function findMonthToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean) {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (value.end.date) {\n return startOfMonth(parseDate(value.end.date));\n }\n return startOfMonth(Date.now());\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,MAAM,UAAU,eAAe,CAC7B,QAAqB,EACrB,QAAc,EACd,aAAyD;IAEzD,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC1E,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QACxD,OAAO,KAAK,CAAC;KACd;IACD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAqB,EACrB,QAAc,EACd,cAA0D;IAE1D,IAAI,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC1E,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QACxD,OAAO,KAAK,CAAC;KACd;IACD,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;QAC5B,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgD,EAAE,YAAqB;IACxG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACpB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;SAChC;QACD,OAAO,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9C;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAClB,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAgD,EAAE,YAAqB;IACvG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACpB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,YAAY,EAAE;YAChB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;SAC/B;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAClB,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/C;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { addMonths, addYears, isSameMonth, isSameYear, startOfMonth, startOfYear } from 'date-fns';\n\nimport { parseDate } from '../../internal/utils/date-time';\nimport { DateRangePickerProps } from '../interfaces';\n\nexport function findDateToFocus(\n selected: Date | null,\n baseDate: Date,\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction\n) {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n}\n\nexport function findMonthToFocus(\n selected: Date | null,\n baseDate: Date,\n isMonthEnabled: DateRangePickerProps.IsDateEnabledFunction\n) {\n if (selected && isMonthEnabled(selected) && isSameYear(selected, baseDate)) {\n return selected;\n }\n\n const today = new Date();\n if (isMonthEnabled(today) && isSameYear(today, baseDate)) {\n return today;\n }\n if (isMonthEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n}\n\nexport function findMonthToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean) {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSingleGrid) {\n return startOfMonth(startDate);\n }\n return startOfMonth(addMonths(startDate, 1));\n }\n if (value.end.date) {\n return startOfMonth(parseDate(value.end.date));\n }\n return startOfMonth(Date.now());\n}\n\nexport function findYearToDisplay(value: DateRangePickerProps.PendingAbsoluteValue, isSingleGrid: boolean) {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSingleGrid) {\n return startOfYear(startDate);\n }\n return startOfYear(addYears(startDate, 1));\n }\n if (value.end.date) {\n return startOfYear(parseDate(value.end.date));\n }\n return startOfYear(Date.now());\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { DateRangePickerProps } from './interfaces';
3
- interface DateRangePickerDropdownProps extends Pick<Required<DateRangePickerProps>, 'locale' | 'isDateEnabled' | 'isValidRange' | 'value' | 'relativeOptions' | 'showClearButton' | 'dateOnly' | 'timeInputFormat' | 'rangeSelectorMode'>, Pick<DateRangePickerProps, 'startOfWeek' | 'getTimeOffset' | 'timeOffset' | 'ariaLabelledby' | 'ariaDescribedby' | 'i18nStrings' | 'customRelativeRangeUnits' | 'dateDisabledReason'> {
3
+ interface DateRangePickerDropdownProps extends Pick<Required<DateRangePickerProps>, 'locale' | 'isDateEnabled' | 'isValidRange' | 'value' | 'relativeOptions' | 'showClearButton' | 'dateOnly' | 'rangeSelectorMode'>, Pick<DateRangePickerProps, 'startOfWeek' | 'getTimeOffset' | 'timeInputFormat' | 'timeOffset' | 'ariaLabelledby' | 'ariaDescribedby' | 'i18nStrings' | 'customRelativeRangeUnits' | 'dateDisabledReason'> {
4
4
  onClear: () => void;
5
5
  onApply: (value: null | DateRangePickerProps.Value) => DateRangePickerProps.ValidationResult;
6
6
  onDropdownClose: () => void;
7
7
  isSingleGrid: boolean;
8
8
  customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;
9
+ granularity?: DateRangePickerProps.Granularity;
9
10
  }
10
- export declare function DateRangePickerDropdown({ locale, startOfWeek, isDateEnabled, dateDisabledReason, isValidRange, value, onClear: clearValue, onApply: applyValue, getTimeOffset, timeOffset, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, customAbsoluteRangeControl, customRelativeRangeUnits, }: DateRangePickerDropdownProps): JSX.Element;
11
+ export declare function DateRangePickerDropdown({ locale, startOfWeek, isDateEnabled, dateDisabledReason, isValidRange, value, onClear: clearValue, onApply: applyValue, getTimeOffset, timeOffset, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, customAbsoluteRangeControl, customRelativeRangeUnits, granularity, }: DateRangePickerDropdownProps): JSX.Element;
11
12
  export {};
12
13
  //# sourceMappingURL=dropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAUpD,UAAU,4BACR,SAAQ,IAAI,CACR,QAAQ,CAAC,oBAAoB,CAAC,EAC5B,QAAQ,GACR,eAAe,GACf,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,iBAAiB,GACjB,UAAU,GACV,iBAAiB,GACjB,mBAAmB,CACtB,EACD,IAAI,CACF,oBAAoB,EAClB,aAAa,GACb,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,0BAA0B,GAC1B,oBAAoB,CACvB;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,KAAK,oBAAoB,CAAC,gBAAgB,CAAC;IAC7F,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;CACnF;AAED,wBAAgB,uBAAuB,CAAC,EACtC,MAAW,EACX,WAAW,EACX,aAAa,EACb,kBAA6B,EAC7B,YAAY,EACZ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,wBAAwB,GACzB,EAAE,4BAA4B,eAsM9B"}
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAWpD,UAAU,4BACR,SAAQ,IAAI,CACR,QAAQ,CAAC,oBAAoB,CAAC,EAC5B,QAAQ,GACR,eAAe,GACf,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,iBAAiB,GACjB,UAAU,GACV,mBAAmB,CACtB,EACD,IAAI,CACF,oBAAoB,EAClB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,0BAA0B,GAC1B,oBAAoB,CACvB;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,oBAAoB,CAAC,KAAK,KAAK,oBAAoB,CAAC,gBAAgB,CAAC;IAC7F,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAClF,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAChD;AAED,wBAAgB,uBAAuB,CAAC,EACtC,MAAW,EACX,WAAW,EACX,aAAa,EACb,kBAA6B,EAC7B,YAAY,EACZ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,wBAAwB,EACxB,WAAmB,GACpB,EAAE,4BAA4B,eA4M9B"}
@@ -15,11 +15,14 @@ import RelativeRangePicker from './relative-range';
15
15
  import { normalizeTimeOffset } from './time-offset';
16
16
  import { formatValue, getDefaultMode, joinAbsoluteValue, splitAbsoluteValue } from './utils';
17
17
  import styles from './styles.css.js';
18
+ import testutilStyles from './test-classes/styles.css.js';
18
19
  const VALID_RANGE = { valid: true };
19
- export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnabled, dateDisabledReason = () => '', isValidRange, value, onClear: clearValue, onApply: applyValue, getTimeOffset, timeOffset, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, customAbsoluteRangeControl, customRelativeRangeUnits, }) {
20
+ export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnabled, dateDisabledReason = () => '', isValidRange, value, onClear: clearValue, onApply: applyValue, getTimeOffset, timeOffset, onDropdownClose, relativeOptions, showClearButton, isSingleGrid, i18nStrings, dateOnly, timeInputFormat, rangeSelectorMode, ariaLabelledby, ariaDescribedby, customAbsoluteRangeControl, customRelativeRangeUnits, granularity = 'day', }) {
20
21
  const i18n = useInternalI18n('date-range-picker');
22
+ const isMonthPicker = granularity === 'month';
23
+ const hideTime = dateOnly || isMonthPicker;
21
24
  const [rangeSelectionMode, setRangeSelectionMode] = useState(getDefaultMode(value, relativeOptions, rangeSelectorMode));
22
- const [selectedAbsoluteRange, setSelectedAbsoluteRange] = useState(() => splitAbsoluteValue((value === null || value === void 0 ? void 0 : value.type) === 'absolute' ? value : null));
25
+ const [selectedAbsoluteRange, setSelectedAbsoluteRange] = useState(() => splitAbsoluteValue((value === null || value === void 0 ? void 0 : value.type) === 'absolute' ? value : null, hideTime));
23
26
  const [selectedRelativeRange, setSelectedRelativeRange] = useState((value === null || value === void 0 ? void 0 : value.type) === 'relative' ? value : null);
24
27
  const scrollableContainerRef = useRef(null);
25
28
  const applyButtonRef = useRef(null);
@@ -34,7 +37,7 @@ export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnable
34
37
  clearValue();
35
38
  };
36
39
  const onApply = () => {
37
- const newValue = rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);
40
+ const newValue = rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange, hideTime);
38
41
  const newValidationResult = applyValue(newValue);
39
42
  if (newValidationResult.valid === false) {
40
43
  setApplyClicked(true);
@@ -50,7 +53,8 @@ export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnable
50
53
  const visibleRange = rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);
51
54
  const formattedRange = formatValue(visibleRange, {
52
55
  dateOnly,
53
- timeOffset: normalizeTimeOffset(visibleRange, getTimeOffset, timeOffset),
56
+ monthOnly: isMonthPicker,
57
+ timeOffset: dateOnly || isMonthPicker ? null : normalizeTimeOffset(visibleRange, getTimeOffset, timeOffset),
54
58
  });
55
59
  const newValidationResult = isValidRange(formattedRange);
56
60
  setValidationResult(newValidationResult || VALID_RANGE);
@@ -63,13 +67,14 @@ export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnable
63
67
  selectedAbsoluteRange,
64
68
  setValidationResult,
65
69
  dateOnly,
70
+ isMonthPicker,
66
71
  getTimeOffset,
67
72
  timeOffset,
68
73
  ]);
69
74
  useEffect(() => { var _a; return (_a = scrollableContainerRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, [scrollableContainerRef]);
70
75
  return (React.createElement(React.Fragment, null,
71
76
  React.createElement(FocusLock, { className: styles['focus-lock'], autoFocus: true },
72
- React.createElement("div", { ref: scrollableContainerRef, className: styles.dropdown, tabIndex: 0, role: "dialog", "aria-label": i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabel, "aria-labelledby": ariaLabelledby !== null && ariaLabelledby !== void 0 ? ariaLabelledby : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabelledby, "aria-describedby": ariaDescribedby !== null && ariaDescribedby !== void 0 ? ariaDescribedby : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaDescribedby },
77
+ React.createElement("div", { ref: scrollableContainerRef, className: clsx(styles.dropdown, testutilStyles.dropdown), tabIndex: 0, role: "dialog", "aria-label": i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabel, "aria-labelledby": ariaLabelledby !== null && ariaLabelledby !== void 0 ? ariaLabelledby : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabelledby, "aria-describedby": ariaDescribedby !== null && ariaDescribedby !== void 0 ? ariaDescribedby : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaDescribedby },
73
78
  React.createElement("div", { className: clsx(styles['dropdown-content'], {
74
79
  [styles['one-grid']]: isSingleGrid,
75
80
  }) },
@@ -81,21 +86,21 @@ export function DateRangePickerDropdown({ locale = '', startOfWeek, isDateEnable
81
86
  setApplyClicked(false);
82
87
  setValidationResult(VALID_RANGE);
83
88
  }, i18nStrings: i18nStrings })),
84
- rangeSelectionMode === 'absolute' && (React.createElement(Calendar, { value: selectedAbsoluteRange, setValue: setSelectedAbsoluteRange, locale: locale, startOfWeek: startOfWeek, isDateEnabled: isDateEnabled, dateDisabledReason: dateDisabledReason, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat, customAbsoluteRangeControl: customAbsoluteRangeControl })),
85
- rangeSelectionMode === 'relative' && (React.createElement(RelativeRangePicker, { isSingleGrid: isSingleGrid, options: relativeOptions, dateOnly: dateOnly, initialSelection: selectedRelativeRange, onChange: range => setSelectedRelativeRange(range), i18nStrings: i18nStrings, customUnits: customRelativeRangeUnits }))),
86
- React.createElement(InternalBox, { className: styles['validation-section'], margin: !validationResult.valid ? { top: 's' } : undefined }, !validationResult.valid && (React.createElement(React.Fragment, null,
89
+ rangeSelectionMode === 'absolute' && (React.createElement(Calendar, { value: selectedAbsoluteRange, setValue: setSelectedAbsoluteRange, locale: locale, startOfWeek: startOfWeek, isDateEnabled: isDateEnabled, dateDisabledReason: dateDisabledReason, i18nStrings: i18nStrings, dateOnly: dateOnly, timeInputFormat: timeInputFormat, customAbsoluteRangeControl: customAbsoluteRangeControl, granularity: granularity })),
90
+ rangeSelectionMode === 'relative' && (React.createElement(RelativeRangePicker, { isSingleGrid: isSingleGrid, options: relativeOptions, dateOnly: dateOnly, initialSelection: selectedRelativeRange, onChange: range => setSelectedRelativeRange(range), i18nStrings: i18nStrings, customUnits: customRelativeRangeUnits, granularity: granularity }))),
91
+ React.createElement(InternalBox, { className: testutilStyles['validation-section'], margin: !validationResult.valid ? { top: 's' } : undefined }, !validationResult.valid && (React.createElement(React.Fragment, null,
87
92
  React.createElement(InternalAlert, { type: "error", statusIconAriaLabel: i18n('i18nStrings.errorIconAriaLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.errorIconAriaLabel) },
88
- React.createElement("span", { className: styles['validation-error'] }, validationResult.errorMessage)),
93
+ React.createElement("span", { className: testutilStyles['validation-error'] }, validationResult.errorMessage)),
89
94
  React.createElement(InternalLiveRegion, { hidden: true, tagName: "span" }, validationResult.errorMessage))))),
90
95
  React.createElement("div", { className: clsx(styles.footer, {
91
96
  [styles['one-grid']]: isSingleGrid,
92
97
  [styles['has-clear-button']]: showClearButton,
93
98
  }) },
94
99
  showClearButton && (React.createElement("div", { className: styles['footer-button-wrapper'] },
95
- React.createElement(InternalButton, { onClick: onClear, className: styles['clear-button'], variant: "link", formAction: "none" }, i18n('i18nStrings.clearButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.clearButtonLabel)))),
100
+ React.createElement(InternalButton, { onClick: onClear, className: testutilStyles['clear-button'], variant: "link", formAction: "none" }, i18n('i18nStrings.clearButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.clearButtonLabel)))),
96
101
  React.createElement("div", { className: styles['footer-button-wrapper'] },
97
102
  React.createElement(InternalSpaceBetween, { size: "xs", direction: "horizontal" },
98
- React.createElement(InternalButton, { onClick: closeDropdown, className: styles['cancel-button'], variant: "link", formAction: "none" }, i18n('i18nStrings.cancelButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.cancelButtonLabel)),
99
- React.createElement(InternalButton, { onClick: onApply, className: styles['apply-button'], ref: applyButtonRef, formAction: "none" }, i18n('i18nStrings.applyButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.applyButtonLabel)))))))))));
103
+ React.createElement(InternalButton, { onClick: closeDropdown, className: testutilStyles['cancel-button'], variant: "link", formAction: "none" }, i18n('i18nStrings.cancelButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.cancelButtonLabel)),
104
+ React.createElement(InternalButton, { onClick: onApply, className: testutilStyles['apply-button'], ref: applyButtonRef, formAction: "none" }, i18n('i18nStrings.applyButtonLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.applyButtonLabel)))))))))));
100
105
  }
101
106
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport InternalAlert from '../alert/internal';\nimport InternalBox from '../box/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport FocusLock from '../internal/components/focus-lock';\nimport InternalLiveRegion from '../live-region/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport Calendar from './calendar';\nimport { DateRangePickerProps } from './interfaces';\nimport ModeSwitcher from './mode-switcher';\nimport RelativeRangePicker from './relative-range';\nimport { normalizeTimeOffset } from './time-offset';\nimport { formatValue, getDefaultMode, joinAbsoluteValue, splitAbsoluteValue } from './utils';\n\nimport styles from './styles.css.js';\n\nconst VALID_RANGE: DateRangePickerProps.ValidRangeResult = { valid: true };\n\ninterface DateRangePickerDropdownProps\n extends Pick<\n Required<DateRangePickerProps>,\n | 'locale'\n | 'isDateEnabled'\n | 'isValidRange'\n | 'value'\n | 'relativeOptions'\n | 'showClearButton'\n | 'dateOnly'\n | 'timeInputFormat'\n | 'rangeSelectorMode'\n >,\n Pick<\n DateRangePickerProps,\n | 'startOfWeek'\n | 'getTimeOffset'\n | 'timeOffset'\n | 'ariaLabelledby'\n | 'ariaDescribedby'\n | 'i18nStrings'\n | 'customRelativeRangeUnits'\n | 'dateDisabledReason'\n > {\n onClear: () => void;\n onApply: (value: null | DateRangePickerProps.Value) => DateRangePickerProps.ValidationResult;\n onDropdownClose: () => void;\n isSingleGrid: boolean;\n customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;\n}\n\nexport function DateRangePickerDropdown({\n locale = '',\n startOfWeek,\n isDateEnabled,\n dateDisabledReason = () => '',\n isValidRange,\n value,\n onClear: clearValue,\n onApply: applyValue,\n getTimeOffset,\n timeOffset,\n onDropdownClose,\n relativeOptions,\n showClearButton,\n isSingleGrid,\n i18nStrings,\n dateOnly,\n timeInputFormat,\n rangeSelectorMode,\n ariaLabelledby,\n ariaDescribedby,\n customAbsoluteRangeControl,\n customRelativeRangeUnits,\n}: DateRangePickerDropdownProps) {\n const i18n = useInternalI18n('date-range-picker');\n\n const [rangeSelectionMode, setRangeSelectionMode] = useState<'absolute' | 'relative'>(\n getDefaultMode(value, relativeOptions, rangeSelectorMode)\n );\n\n const [selectedAbsoluteRange, setSelectedAbsoluteRange] = useState<DateRangePickerProps.PendingAbsoluteValue>(() =>\n splitAbsoluteValue(value?.type === 'absolute' ? value : null)\n );\n\n const [selectedRelativeRange, setSelectedRelativeRange] = useState<DateRangePickerProps.RelativeValue | null>(\n value?.type === 'relative' ? value : null\n );\n\n const scrollableContainerRef = useRef<HTMLDivElement | null>(null);\n const applyButtonRef = useRef<ButtonProps.Ref>(null);\n\n const [applyClicked, setApplyClicked] = useState<boolean>(false);\n\n const [validationResult, setValidationResult] = useState<\n DateRangePickerProps.ValidRangeResult | DateRangePickerProps.InvalidRangeResult\n >(VALID_RANGE);\n\n const closeDropdown = () => {\n setApplyClicked(false);\n onDropdownClose();\n };\n\n const onClear = () => {\n closeDropdown();\n clearValue();\n };\n\n const onApply = () => {\n const newValue =\n rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);\n const newValidationResult = applyValue(newValue);\n if (newValidationResult.valid === false) {\n setApplyClicked(true);\n setValidationResult(newValidationResult);\n } else {\n setApplyClicked(false);\n closeDropdown();\n }\n };\n\n useEffect(() => {\n if (applyClicked) {\n const visibleRange =\n rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);\n const formattedRange = formatValue(visibleRange, {\n dateOnly,\n timeOffset: normalizeTimeOffset(visibleRange, getTimeOffset, timeOffset),\n });\n const newValidationResult = isValidRange(formattedRange);\n setValidationResult(newValidationResult || VALID_RANGE);\n }\n }, [\n applyClicked,\n isValidRange,\n rangeSelectionMode,\n selectedRelativeRange,\n selectedAbsoluteRange,\n setValidationResult,\n dateOnly,\n getTimeOffset,\n timeOffset,\n ]);\n\n useEffect(() => scrollableContainerRef.current?.focus(), [scrollableContainerRef]);\n\n return (\n <>\n <FocusLock className={styles['focus-lock']} autoFocus={true}>\n <div\n ref={scrollableContainerRef}\n className={styles.dropdown}\n tabIndex={0}\n role=\"dialog\"\n aria-label={i18nStrings?.ariaLabel}\n aria-labelledby={ariaLabelledby ?? i18nStrings?.ariaLabelledby}\n aria-describedby={ariaDescribedby ?? i18nStrings?.ariaDescribedby}\n >\n <div\n className={clsx(styles['dropdown-content'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <InternalSpaceBetween size=\"l\">\n <InternalBox padding={{ top: 'm', horizontal: 'l' }}>\n <InternalSpaceBetween direction=\"vertical\" size=\"s\">\n {rangeSelectorMode === 'default' && (\n <ModeSwitcher\n mode={rangeSelectionMode}\n onChange={(mode: 'absolute' | 'relative') => {\n setRangeSelectionMode(mode);\n setApplyClicked(false);\n setValidationResult(VALID_RANGE);\n }}\n i18nStrings={i18nStrings}\n />\n )}\n\n {rangeSelectionMode === 'absolute' && (\n <Calendar\n value={selectedAbsoluteRange}\n setValue={setSelectedAbsoluteRange}\n locale={locale}\n startOfWeek={startOfWeek}\n isDateEnabled={isDateEnabled}\n dateDisabledReason={dateDisabledReason}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n customAbsoluteRangeControl={customAbsoluteRangeControl}\n />\n )}\n\n {rangeSelectionMode === 'relative' && (\n <RelativeRangePicker\n isSingleGrid={isSingleGrid}\n options={relativeOptions}\n dateOnly={dateOnly}\n initialSelection={selectedRelativeRange}\n onChange={range => setSelectedRelativeRange(range)}\n i18nStrings={i18nStrings}\n customUnits={customRelativeRangeUnits}\n />\n )}\n </InternalSpaceBetween>\n\n <InternalBox\n className={styles['validation-section']}\n margin={!validationResult.valid ? { top: 's' } : undefined}\n >\n {!validationResult.valid && (\n <>\n <InternalAlert\n type=\"error\"\n statusIconAriaLabel={i18n('i18nStrings.errorIconAriaLabel', i18nStrings?.errorIconAriaLabel)}\n >\n <span className={styles['validation-error']}>{validationResult.errorMessage}</span>\n </InternalAlert>\n <InternalLiveRegion hidden={true} tagName=\"span\">\n {validationResult.errorMessage}\n </InternalLiveRegion>\n </>\n )}\n </InternalBox>\n </InternalBox>\n\n <div\n className={clsx(styles.footer, {\n [styles['one-grid']]: isSingleGrid,\n [styles['has-clear-button']]: showClearButton,\n })}\n >\n {showClearButton && (\n <div className={styles['footer-button-wrapper']}>\n <InternalButton\n onClick={onClear}\n className={styles['clear-button']}\n variant=\"link\"\n formAction=\"none\"\n >\n {i18n('i18nStrings.clearButtonLabel', i18nStrings?.clearButtonLabel)}\n </InternalButton>\n </div>\n )}\n <div className={styles['footer-button-wrapper']}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n <InternalButton\n onClick={closeDropdown}\n className={styles['cancel-button']}\n variant=\"link\"\n formAction=\"none\"\n >\n {i18n('i18nStrings.cancelButtonLabel', i18nStrings?.cancelButtonLabel)}\n </InternalButton>\n\n <InternalButton\n onClick={onApply}\n className={styles['apply-button']}\n ref={applyButtonRef}\n formAction=\"none\"\n >\n {i18n('i18nStrings.applyButtonLabel', i18nStrings?.applyButtonLabel)}\n </InternalButton>\n </InternalSpaceBetween>\n </div>\n </div>\n </InternalSpaceBetween>\n </div>\n </div>\n </FocusLock>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/date-range-picker/dropdown.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,SAAS,MAAM,mCAAmC,CAAC;AAC1D,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7F,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,MAAM,WAAW,GAA0C,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAkC3E,MAAM,UAAU,uBAAuB,CAAC,EACtC,MAAM,GAAG,EAAE,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,GAAG,GAAG,EAAE,CAAC,EAAE,EAC7B,YAAY,EACZ,KAAK,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,wBAAwB,EACxB,WAAW,GAAG,KAAK,GACU;IAC7B,MAAM,IAAI,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,WAAW,KAAK,OAAO,CAAC;IAC9C,MAAM,QAAQ,GAAG,QAAQ,IAAI,aAAa,CAAC;IAE3C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAC1D,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAC1D,CAAC;IAEF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAA4C,GAAG,EAAE,CACjH,kBAAkB,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CACxE,CAAC;IAEF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAChE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1C,CAAC;IAEF,MAAM,sBAAsB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAErD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEjE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAEtD,WAAW,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,QAAQ,GACZ,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QACjH,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,mBAAmB,CAAC,KAAK,KAAK,KAAK,EAAE;YACvC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;SAC1C;aAAM;YACL,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,aAAa,EAAE,CAAC;SACjB;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE;YAChB,MAAM,YAAY,GAChB,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YACvG,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,EAAE;gBAC/C,QAAQ;gBACR,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;aAC5G,CAAC,CAAC;YACH,MAAM,mBAAmB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;YACzD,mBAAmB,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAC;SACzD;IACH,CAAC,EAAE;QACD,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,qBAAqB;QACrB,mBAAmB;QACnB,QAAQ;QACR,aAAa;QACb,aAAa;QACb,UAAU;KACX,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,sBAAsB,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEnF,OAAO,CACL;QACE,oBAAC,SAAS,IAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI;YACzD,6BACE,GAAG,EAAE,sBAAsB,EAC3B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,EACzD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,gBACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,qBACjB,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,sBAC5C,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe;gBAEjE,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;wBAC1C,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY;qBACnC,CAAC;oBAEF,oBAAC,oBAAoB,IAAC,IAAI,EAAC,GAAG;wBAC5B,oBAAC,WAAW,IAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;4BACjD,oBAAC,oBAAoB,IAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,GAAG;gCAChD,iBAAiB,KAAK,SAAS,IAAI,CAClC,oBAAC,YAAY,IACX,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,CAAC,IAA6B,EAAE,EAAE;wCAC1C,qBAAqB,CAAC,IAAI,CAAC,CAAC;wCAC5B,eAAe,CAAC,KAAK,CAAC,CAAC;wCACvB,mBAAmB,CAAC,WAAW,CAAC,CAAC;oCACnC,CAAC,EACD,WAAW,EAAE,WAAW,GACxB,CACH;gCAEA,kBAAkB,KAAK,UAAU,IAAI,CACpC,oBAAC,QAAQ,IACP,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,0BAA0B,EAAE,0BAA0B,EACtD,WAAW,EAAE,WAAW,GACxB,CACH;gCAEA,kBAAkB,KAAK,UAAU,IAAI,CACpC,oBAAC,mBAAmB,IAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,qBAAqB,EACvC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAClD,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,wBAAwB,EACrC,WAAW,EAAE,WAAW,GACxB,CACH,CACoB;4BAEvB,oBAAC,WAAW,IACV,SAAS,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC/C,MAAM,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,IAEzD,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAC1B;gCACE,oBAAC,aAAa,IACZ,IAAI,EAAC,OAAO,EACZ,mBAAmB,EAAE,IAAI,CAAC,gCAAgC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,kBAAkB,CAAC;oCAE5F,8BAAM,SAAS,EAAE,cAAc,CAAC,kBAAkB,CAAC,IAAG,gBAAgB,CAAC,YAAY,CAAQ,CAC7E;gCAChB,oBAAC,kBAAkB,IAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,IAC7C,gBAAgB,CAAC,YAAY,CACX,CACpB,CACJ,CACW,CACF;wBAEd,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gCAC7B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY;gCAClC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,eAAe;6BAC9C,CAAC;4BAED,eAAe,IAAI,CAClB,6BAAK,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC;gCAC7C,oBAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,EACzC,OAAO,EAAC,MAAM,EACd,UAAU,EAAC,MAAM,IAEhB,IAAI,CAAC,8BAA8B,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,CACrD,CACb,CACP;4BACD,6BAAK,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC;gCAC7C,oBAAC,oBAAoB,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,YAAY;oCACpD,oBAAC,cAAc,IACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,cAAc,CAAC,eAAe,CAAC,EAC1C,OAAO,EAAC,MAAM,EACd,UAAU,EAAC,MAAM,IAEhB,IAAI,CAAC,+BAA+B,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAC,CACvD;oCAEjB,oBAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,EACzC,GAAG,EAAE,cAAc,EACnB,UAAU,EAAC,MAAM,IAEhB,IAAI,CAAC,8BAA8B,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC,CACrD,CACI,CACnB,CACF,CACe,CACnB,CACF,CACI,CACX,CACJ,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport InternalAlert from '../alert/internal';\nimport InternalBox from '../box/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport FocusLock from '../internal/components/focus-lock';\nimport InternalLiveRegion from '../live-region/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport Calendar from './calendar';\nimport { DateRangePickerProps } from './interfaces';\nimport ModeSwitcher from './mode-switcher';\nimport RelativeRangePicker from './relative-range';\nimport { normalizeTimeOffset } from './time-offset';\nimport { formatValue, getDefaultMode, joinAbsoluteValue, splitAbsoluteValue } from './utils';\n\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\n\nconst VALID_RANGE: DateRangePickerProps.ValidRangeResult = { valid: true };\n\ninterface DateRangePickerDropdownProps\n extends Pick<\n Required<DateRangePickerProps>,\n | 'locale'\n | 'isDateEnabled'\n | 'isValidRange'\n | 'value'\n | 'relativeOptions'\n | 'showClearButton'\n | 'dateOnly'\n | 'rangeSelectorMode'\n >,\n Pick<\n DateRangePickerProps,\n | 'startOfWeek'\n | 'getTimeOffset'\n | 'timeInputFormat'\n | 'timeOffset'\n | 'ariaLabelledby'\n | 'ariaDescribedby'\n | 'i18nStrings'\n | 'customRelativeRangeUnits'\n | 'dateDisabledReason'\n > {\n onClear: () => void;\n onApply: (value: null | DateRangePickerProps.Value) => DateRangePickerProps.ValidationResult;\n onDropdownClose: () => void;\n isSingleGrid: boolean;\n customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;\n granularity?: DateRangePickerProps.Granularity;\n}\n\nexport function DateRangePickerDropdown({\n locale = '',\n startOfWeek,\n isDateEnabled,\n dateDisabledReason = () => '',\n isValidRange,\n value,\n onClear: clearValue,\n onApply: applyValue,\n getTimeOffset,\n timeOffset,\n onDropdownClose,\n relativeOptions,\n showClearButton,\n isSingleGrid,\n i18nStrings,\n dateOnly,\n timeInputFormat,\n rangeSelectorMode,\n ariaLabelledby,\n ariaDescribedby,\n customAbsoluteRangeControl,\n customRelativeRangeUnits,\n granularity = 'day',\n}: DateRangePickerDropdownProps) {\n const i18n = useInternalI18n('date-range-picker');\n const isMonthPicker = granularity === 'month';\n const hideTime = dateOnly || isMonthPicker;\n\n const [rangeSelectionMode, setRangeSelectionMode] = useState<'absolute' | 'relative'>(\n getDefaultMode(value, relativeOptions, rangeSelectorMode)\n );\n\n const [selectedAbsoluteRange, setSelectedAbsoluteRange] = useState<DateRangePickerProps.PendingAbsoluteValue>(() =>\n splitAbsoluteValue(value?.type === 'absolute' ? value : null, hideTime)\n );\n\n const [selectedRelativeRange, setSelectedRelativeRange] = useState<DateRangePickerProps.RelativeValue | null>(\n value?.type === 'relative' ? value : null\n );\n\n const scrollableContainerRef = useRef<HTMLDivElement | null>(null);\n const applyButtonRef = useRef<ButtonProps.Ref>(null);\n\n const [applyClicked, setApplyClicked] = useState<boolean>(false);\n\n const [validationResult, setValidationResult] = useState<\n DateRangePickerProps.ValidRangeResult | DateRangePickerProps.InvalidRangeResult\n >(VALID_RANGE);\n\n const closeDropdown = () => {\n setApplyClicked(false);\n onDropdownClose();\n };\n\n const onClear = () => {\n closeDropdown();\n clearValue();\n };\n\n const onApply = () => {\n const newValue =\n rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange, hideTime);\n const newValidationResult = applyValue(newValue);\n if (newValidationResult.valid === false) {\n setApplyClicked(true);\n setValidationResult(newValidationResult);\n } else {\n setApplyClicked(false);\n closeDropdown();\n }\n };\n\n useEffect(() => {\n if (applyClicked) {\n const visibleRange =\n rangeSelectionMode === 'relative' ? selectedRelativeRange : joinAbsoluteValue(selectedAbsoluteRange);\n const formattedRange = formatValue(visibleRange, {\n dateOnly,\n monthOnly: isMonthPicker,\n timeOffset: dateOnly || isMonthPicker ? null : normalizeTimeOffset(visibleRange, getTimeOffset, timeOffset),\n });\n const newValidationResult = isValidRange(formattedRange);\n setValidationResult(newValidationResult || VALID_RANGE);\n }\n }, [\n applyClicked,\n isValidRange,\n rangeSelectionMode,\n selectedRelativeRange,\n selectedAbsoluteRange,\n setValidationResult,\n dateOnly,\n isMonthPicker,\n getTimeOffset,\n timeOffset,\n ]);\n\n useEffect(() => scrollableContainerRef.current?.focus(), [scrollableContainerRef]);\n\n return (\n <>\n <FocusLock className={styles['focus-lock']} autoFocus={true}>\n <div\n ref={scrollableContainerRef}\n className={clsx(styles.dropdown, testutilStyles.dropdown)}\n tabIndex={0}\n role=\"dialog\"\n aria-label={i18nStrings?.ariaLabel}\n aria-labelledby={ariaLabelledby ?? i18nStrings?.ariaLabelledby}\n aria-describedby={ariaDescribedby ?? i18nStrings?.ariaDescribedby}\n >\n <div\n className={clsx(styles['dropdown-content'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <InternalSpaceBetween size=\"l\">\n <InternalBox padding={{ top: 'm', horizontal: 'l' }}>\n <InternalSpaceBetween direction=\"vertical\" size=\"s\">\n {rangeSelectorMode === 'default' && (\n <ModeSwitcher\n mode={rangeSelectionMode}\n onChange={(mode: 'absolute' | 'relative') => {\n setRangeSelectionMode(mode);\n setApplyClicked(false);\n setValidationResult(VALID_RANGE);\n }}\n i18nStrings={i18nStrings}\n />\n )}\n\n {rangeSelectionMode === 'absolute' && (\n <Calendar\n value={selectedAbsoluteRange}\n setValue={setSelectedAbsoluteRange}\n locale={locale}\n startOfWeek={startOfWeek}\n isDateEnabled={isDateEnabled}\n dateDisabledReason={dateDisabledReason}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n customAbsoluteRangeControl={customAbsoluteRangeControl}\n granularity={granularity}\n />\n )}\n\n {rangeSelectionMode === 'relative' && (\n <RelativeRangePicker\n isSingleGrid={isSingleGrid}\n options={relativeOptions}\n dateOnly={dateOnly}\n initialSelection={selectedRelativeRange}\n onChange={range => setSelectedRelativeRange(range)}\n i18nStrings={i18nStrings}\n customUnits={customRelativeRangeUnits}\n granularity={granularity}\n />\n )}\n </InternalSpaceBetween>\n\n <InternalBox\n className={testutilStyles['validation-section']}\n margin={!validationResult.valid ? { top: 's' } : undefined}\n >\n {!validationResult.valid && (\n <>\n <InternalAlert\n type=\"error\"\n statusIconAriaLabel={i18n('i18nStrings.errorIconAriaLabel', i18nStrings?.errorIconAriaLabel)}\n >\n <span className={testutilStyles['validation-error']}>{validationResult.errorMessage}</span>\n </InternalAlert>\n <InternalLiveRegion hidden={true} tagName=\"span\">\n {validationResult.errorMessage}\n </InternalLiveRegion>\n </>\n )}\n </InternalBox>\n </InternalBox>\n\n <div\n className={clsx(styles.footer, {\n [styles['one-grid']]: isSingleGrid,\n [styles['has-clear-button']]: showClearButton,\n })}\n >\n {showClearButton && (\n <div className={styles['footer-button-wrapper']}>\n <InternalButton\n onClick={onClear}\n className={testutilStyles['clear-button']}\n variant=\"link\"\n formAction=\"none\"\n >\n {i18n('i18nStrings.clearButtonLabel', i18nStrings?.clearButtonLabel)}\n </InternalButton>\n </div>\n )}\n <div className={styles['footer-button-wrapper']}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n <InternalButton\n onClick={closeDropdown}\n className={testutilStyles['cancel-button']}\n variant=\"link\"\n formAction=\"none\"\n >\n {i18n('i18nStrings.cancelButtonLabel', i18nStrings?.cancelButtonLabel)}\n </InternalButton>\n\n <InternalButton\n onClick={onApply}\n className={testutilStyles['apply-button']}\n ref={applyButtonRef}\n formAction=\"none\"\n >\n {i18n('i18nStrings.applyButtonLabel', i18nStrings?.applyButtonLabel)}\n </InternalButton>\n </InternalSpaceBetween>\n </div>\n </div>\n </InternalSpaceBetween>\n </div>\n </div>\n </FocusLock>\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;AA4BhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMpD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAmDhC,QAAA,MAAM,eAAe,uGAiQpB,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;AA4BhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAmDhC,QAAA,MAAM,eAAe,uGA2QpB,CAAC;AAGF,eAAe,eAAe,CAAC"}
@@ -30,6 +30,7 @@ import { DateRangePickerDropdown } from './dropdown';
30
30
  import { normalizeTimeOffset } from './time-offset';
31
31
  import { formatInitialValue, formatValue } from './utils';
32
32
  import styles from './styles.css.js';
33
+ import testutilStyles from './test-classes/styles.css.js';
33
34
  function renderDateRange({ locale, range, placeholder = '', formatRelativeRange, absoluteFormat, hideTimeOffset, timeOffset, }) {
34
35
  var _a;
35
36
  const firstPart = range
@@ -59,7 +60,7 @@ function renderDateRange({ locale, range, placeholder = '', formatRelativeRange,
59
60
  }
60
61
  const DateRangePicker = React.forwardRef((_a, ref) => {
61
62
  var _b, _c;
62
- var { locale = '', startOfWeek, isDateEnabled = () => true, dateDisabledReason, value, placeholder, readOnly = false, disabled = false, onChange, onBlur, onFocus, relativeOptions = [], i18nStrings, isValidRange = () => ({ valid: true }), showClearButton = true, dateOnly = false, timeOffset, getTimeOffset, timeInputFormat = 'hh:mm:ss', expandToViewport = false, rangeSelectorMode = 'default', customAbsoluteRangeControl, absoluteFormat = 'iso', hideTimeOffset, customRelativeRangeUnits } = _a, rest = __rest(_a, ["locale", "startOfWeek", "isDateEnabled", "dateDisabledReason", "value", "placeholder", "readOnly", "disabled", "onChange", "onBlur", "onFocus", "relativeOptions", "i18nStrings", "isValidRange", "showClearButton", "dateOnly", "timeOffset", "getTimeOffset", "timeInputFormat", "expandToViewport", "rangeSelectorMode", "customAbsoluteRangeControl", "absoluteFormat", "hideTimeOffset", "customRelativeRangeUnits"]);
63
+ var { locale = '', startOfWeek, isDateEnabled = () => true, dateDisabledReason, value, placeholder, readOnly = false, disabled = false, onChange, onBlur, onFocus, relativeOptions = [], i18nStrings, isValidRange = () => ({ valid: true }), showClearButton = true, dateOnly = false, timeOffset, getTimeOffset, timeInputFormat = 'hh:mm:ss', expandToViewport = false, rangeSelectorMode = 'default', customAbsoluteRangeControl, absoluteFormat = 'iso', hideTimeOffset, customRelativeRangeUnits, granularity = 'day' } = _a, rest = __rest(_a, ["locale", "startOfWeek", "isDateEnabled", "dateDisabledReason", "value", "placeholder", "readOnly", "disabled", "onChange", "onBlur", "onFocus", "relativeOptions", "i18nStrings", "isValidRange", "showClearButton", "dateOnly", "timeOffset", "getTimeOffset", "timeInputFormat", "expandToViewport", "rangeSelectorMode", "customAbsoluteRangeControl", "absoluteFormat", "hideTimeOffset", "customRelativeRangeUnits", "granularity"]);
63
64
  const { __internalRootRef } = useBaseComponent('DateRangePicker', {
64
65
  props: {
65
66
  absoluteFormat,
@@ -70,12 +71,17 @@ const DateRangePicker = React.forwardRef((_a, ref) => {
70
71
  showClearButton,
71
72
  timeInputFormat,
72
73
  hideTimeOffset,
74
+ granularity,
73
75
  },
74
76
  metadata: { hasDisabledReasons: Boolean(dateDisabledReason) },
75
77
  });
78
+ const isMonthOnly = granularity === 'month';
79
+ const hideTime = dateOnly || isMonthOnly;
76
80
  checkControlled('DateRangePicker', 'value', value, 'onChange', onChange);
77
- const normalizedTimeOffset = normalizeTimeOffset(value, getTimeOffset, timeOffset);
78
- value = formatInitialValue(value, dateOnly, normalizedTimeOffset);
81
+ const normalizedTimeOffset = hideTime
82
+ ? { startDate: undefined, endDate: undefined }
83
+ : normalizeTimeOffset(value, getTimeOffset, timeOffset);
84
+ value = formatInitialValue(value, dateOnly, isMonthOnly, normalizedTimeOffset);
79
85
  const baseProps = getBaseProps(rest);
80
86
  const { invalid, warning, controlId, ariaDescribedby, ariaLabelledby } = useFormFieldContext(Object.assign({ ariaLabelledby: (_b = rest.ariaLabelledby) !== null && _b !== void 0 ? _b : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabelledby, ariaDescribedby: (_c = rest.ariaDescribedby) !== null && _c !== void 0 ? _c : i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaDescribedby }, rest));
81
87
  const isSingleGrid = useMobile();
@@ -108,7 +114,10 @@ const DateRangePicker = React.forwardRef((_a, ref) => {
108
114
  const onApply = (newValue) => {
109
115
  const formattedValue = formatValue(newValue, {
110
116
  dateOnly,
111
- timeOffset: normalizeTimeOffset(newValue, getTimeOffset, timeOffset),
117
+ monthOnly: isMonthOnly,
118
+ timeOffset: hideTime
119
+ ? { startDate: undefined, endDate: undefined }
120
+ : normalizeTimeOffset(newValue, getTimeOffset, timeOffset),
112
121
  });
113
122
  const validationResult = isValidRange(formattedValue);
114
123
  if ((validationResult === null || validationResult === void 0 ? void 0 : validationResult.valid) === false) {
@@ -154,10 +163,10 @@ const DateRangePicker = React.forwardRef((_a, ref) => {
154
163
  placeholder,
155
164
  formatRelativeRange,
156
165
  absoluteFormat,
157
- hideTimeOffset,
166
+ hideTimeOffset: hideTime || hideTimeOffset,
158
167
  timeOffset: normalizedTimeOffset,
159
168
  });
160
- const trigger = (React.createElement(ButtonTrigger, { ref: triggerRef, id: controlId, invalid: invalid, warning: warning, ariaLabelledby: joinStrings(ariaLabelledby, triggerContentId), ariaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabel, ariaDescribedby: ariaDescribedby, className: clsx(styles.label, {
169
+ const trigger = (React.createElement(ButtonTrigger, { ref: triggerRef, id: controlId, invalid: invalid, warning: warning, ariaLabelledby: joinStrings(ariaLabelledby, triggerContentId), ariaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.ariaLabel, ariaDescribedby: ariaDescribedby, className: clsx(testutilStyles.label, styles.label, {
161
170
  [styles['label-enabled']]: !readOnly && !disabled,
162
171
  }), hideCaret: true, onClick: () => {
163
172
  setIsDropDownOpen(true);
@@ -167,9 +176,9 @@ const DateRangePicker = React.forwardRef((_a, ref) => {
167
176
  React.createElement(InternalIcon, { name: "calendar", variant: disabled || readOnly ? 'disabled' : 'normal' })),
168
177
  React.createElement("span", { id: triggerContentId }, formattedDate))));
169
178
  const mergedRef = useMergeRefs(rootRef, __internalRootRef);
170
- return (React.createElement("div", Object.assign({}, baseProps, { ref: mergedRef, className: clsx(baseProps.className, styles.root, absoluteFormat === 'long-localized' && !dateOnly && styles.wide), onKeyDown: onWrapperKeyDownHandler }),
179
+ return (React.createElement("div", Object.assign({}, baseProps, { ref: mergedRef, className: clsx(baseProps.className, styles.root, testutilStyles.root, absoluteFormat === 'long-localized' && !dateOnly && !isMonthOnly && styles.wide), onKeyDown: onWrapperKeyDownHandler }),
171
180
  React.createElement(Dropdown, { stretchWidth: true, stretchHeight: true, open: isDropDownOpen, onDropdownClose: () => closeDropdown(), trigger: trigger, stretchToTriggerWidth: false, expandToViewport: expandToViewport, dropdownId: dropdownId },
172
- React.createElement(ResetContextsForModal, null, isDropDownOpen && (React.createElement(DateRangePickerDropdown, { startOfWeek: startOfWeek, locale: normalizedLocale, isSingleGrid: isSingleGrid, onDropdownClose: () => closeDropdown(true), value: value, showClearButton: showClearButton, isDateEnabled: isDateEnabled, dateDisabledReason: dateDisabledReason, i18nStrings: i18nStrings, onClear: onClear, onApply: onApply, getTimeOffset: getTimeOffset, timeOffset: timeOffset, relativeOptions: relativeOptions, isValidRange: isValidRange, dateOnly: dateOnly, timeInputFormat: timeInputFormat, rangeSelectorMode: rangeSelectorMode, ariaLabelledby: ariaLabelledby, ariaDescribedby: ariaDescribedby, customAbsoluteRangeControl: customAbsoluteRangeControl, customRelativeRangeUnits: customRelativeRangeUnits }))))));
181
+ React.createElement(ResetContextsForModal, null, isDropDownOpen && (React.createElement(DateRangePickerDropdown, { startOfWeek: startOfWeek, locale: normalizedLocale, isSingleGrid: isSingleGrid, onDropdownClose: () => closeDropdown(true), value: value, showClearButton: showClearButton, isDateEnabled: isDateEnabled, dateDisabledReason: dateDisabledReason, i18nStrings: i18nStrings, onClear: onClear, onApply: onApply, getTimeOffset: getTimeOffset, timeOffset: timeOffset, relativeOptions: relativeOptions, isValidRange: isValidRange, dateOnly: dateOnly, timeInputFormat: timeInputFormat, rangeSelectorMode: rangeSelectorMode, ariaLabelledby: ariaLabelledby, ariaDescribedby: ariaDescribedby, customAbsoluteRangeControl: customAbsoluteRangeControl, customRelativeRangeUnits: customRelativeRangeUnits, granularity: granularity }))))));
173
182
  });
174
183
  applyDisplayName(DateRangePicker, 'DateRangePicker');
175
184
  export default DateRangePicker;
@@ -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 clsx from 'clsx';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport ButtonTrigger from '../internal/components/button-trigger';\nimport Dropdown from '../internal/components/dropdown';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport ResetContextsForModal from '../internal/context/reset-contexts-for-modal.js';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useFocusTracker } from '../internal/hooks/use-focus-tracker';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { isDevelopment } from '../internal/is-development.js';\nimport { KeyCode } from '../internal/keycode';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { formatDateTimeWithOffset } from '../internal/utils/date-time/format-date-time-with-offset';\nimport { normalizeLocale } from '../internal/utils/locale';\nimport { joinStrings } from '../internal/utils/strings/join-strings';\nimport { DateRangePickerDropdown } from './dropdown';\nimport { DateRangePickerProps } from './interfaces';\nimport { normalizeTimeOffset } from './time-offset';\nimport { formatInitialValue, formatValue } from './utils';\n\nimport styles from './styles.css.js';\n\nexport { DateRangePickerProps };\n\nfunction renderDateRange({\n locale,\n range,\n placeholder = '',\n formatRelativeRange,\n absoluteFormat,\n hideTimeOffset,\n timeOffset,\n}: {\n locale?: string;\n range: null | DateRangePickerProps.Value;\n placeholder?: string;\n formatRelativeRange: DateRangePickerProps.I18nStrings['formatRelativeRange'];\n absoluteFormat: DateRangePickerProps.AbsoluteFormat;\n hideTimeOffset?: boolean;\n timeOffset: { startDate?: number; endDate?: number };\n}) {\n const firstPart = range\n ? range.type === 'relative'\n ? formatRelativeRange?.(range) ?? ''\n : formatDateTimeWithOffset({\n date: range.startDate,\n timeOffset: timeOffset.startDate,\n hideTimeOffset,\n format: absoluteFormat,\n locale,\n })\n : placeholder;\n\n const secondPart =\n range?.type === 'absolute'\n ? formatDateTimeWithOffset({\n date: range.endDate,\n timeOffset: timeOffset.endDate,\n hideTimeOffset,\n format: absoluteFormat,\n locale,\n })\n : '';\n\n return (\n <span className={(!range && styles['label-text']) || undefined} aria-disabled={!range}>\n <span className={range?.type === 'absolute' ? styles['label-token-nowrap'] : undefined}>{firstPart}</span>\n <span>{secondPart && ' — '}</span>\n <span className={styles['label-token-nowrap']}>{secondPart}</span>\n </span>\n );\n}\n\nconst DateRangePicker = React.forwardRef(\n (\n {\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n dateDisabledReason,\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,\n getTimeOffset,\n timeInputFormat = 'hh:mm:ss',\n expandToViewport = false,\n rangeSelectorMode = 'default',\n customAbsoluteRangeControl,\n absoluteFormat = 'iso',\n hideTimeOffset,\n customRelativeRangeUnits,\n ...rest\n }: DateRangePickerProps,\n ref: Ref<DateRangePickerProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('DateRangePicker', {\n props: {\n absoluteFormat,\n dateOnly,\n expandToViewport,\n rangeSelectorMode,\n readOnly,\n showClearButton,\n timeInputFormat,\n hideTimeOffset,\n },\n metadata: { hasDisabledReasons: Boolean(dateDisabledReason) },\n });\n checkControlled('DateRangePicker', 'value', value, 'onChange', onChange);\n\n const normalizedTimeOffset = normalizeTimeOffset(value, getTimeOffset, timeOffset);\n value = formatInitialValue(value, dateOnly, normalizedTimeOffset);\n\n const baseProps = getBaseProps(rest);\n const { invalid, warning, 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 const triggerContentId = useUniqueId('date-range-picker-trigger');\n\n useFocusTracker({ rootRef, onBlur, onFocus });\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 if (isDropDownOpen) {\n event.stopPropagation();\n }\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 formattedValue = formatValue(newValue, {\n dateOnly,\n timeOffset: normalizeTimeOffset(newValue, getTimeOffset, timeOffset),\n });\n\n const validationResult = isValidRange(formattedValue);\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: formattedValue });\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 i18n = useInternalI18n('date-range-picker');\n const formatRelativeRange = i18n(\n 'i18nStrings.formatRelativeRange',\n i18nStrings?.formatRelativeRange,\n format =>\n ({ amount, unit }) =>\n format({ amount, unit })\n );\n\n if (isDevelopment) {\n if (!formatRelativeRange && rangeSelectorMode !== 'absolute-only') {\n warnOnce(\n 'DateRangePicker',\n 'A function for i18nStrings.formatRelativeRange was not provided. Relative ranges will not be correctly rendered.'\n );\n }\n }\n\n const formattedDate: string | JSX.Element = renderDateRange({\n locale: normalizedLocale,\n range: value,\n placeholder,\n formatRelativeRange,\n absoluteFormat,\n hideTimeOffset,\n timeOffset: normalizedTimeOffset,\n });\n\n const trigger = (\n <ButtonTrigger\n ref={triggerRef}\n id={controlId}\n invalid={invalid}\n warning={warning}\n ariaLabelledby={joinStrings(ariaLabelledby, triggerContentId)}\n ariaLabel={i18nStrings?.ariaLabel}\n ariaDescribedby={ariaDescribedby}\n className={clsx(styles.label, {\n [styles['label-enabled']]: !readOnly && !disabled,\n })}\n hideCaret={true}\n onClick={() => {\n setIsDropDownOpen(true);\n }}\n disabled={disabled}\n readOnly={readOnly}\n ariaHasPopup=\"dialog\"\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 <span id={triggerContentId}>{formattedDate}</span>\n </span>\n </ButtonTrigger>\n );\n\n const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n return (\n <div\n {...baseProps}\n ref={mergedRef}\n className={clsx(\n baseProps.className,\n styles.root,\n absoluteFormat === 'long-localized' && !dateOnly && styles.wide\n )}\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 {/* Reset form field context to prevent a wrapper form field from labelling all inputs inside the dropdown. */}\n <ResetContextsForModal>\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 dateDisabledReason={dateDisabledReason}\n i18nStrings={i18nStrings}\n onClear={onClear}\n onApply={onApply}\n getTimeOffset={getTimeOffset}\n timeOffset={timeOffset}\n relativeOptions={relativeOptions}\n isValidRange={isValidRange}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n rangeSelectorMode={rangeSelectorMode}\n ariaLabelledby={ariaLabelledby}\n ariaDescribedby={ariaDescribedby}\n customAbsoluteRangeControl={customAbsoluteRangeControl}\n customRelativeRangeUnits={customRelativeRangeUnits}\n />\n )}\n </ResetContextsForModal>\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 clsx from 'clsx';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport ButtonTrigger from '../internal/components/button-trigger';\nimport Dropdown from '../internal/components/dropdown';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport ResetContextsForModal from '../internal/context/reset-contexts-for-modal.js';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useFocusTracker } from '../internal/hooks/use-focus-tracker';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { isDevelopment } from '../internal/is-development.js';\nimport { KeyCode } from '../internal/keycode';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { formatDateTimeWithOffset } from '../internal/utils/date-time/format-date-time-with-offset';\nimport { normalizeLocale } from '../internal/utils/locale';\nimport { joinStrings } from '../internal/utils/strings/join-strings';\nimport { DateRangePickerDropdown } from './dropdown';\nimport { DateRangePickerProps } from './interfaces';\nimport { normalizeTimeOffset } from './time-offset';\nimport { formatInitialValue, formatValue } from './utils';\n\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\n\nexport { DateRangePickerProps };\n\nfunction renderDateRange({\n locale,\n range,\n placeholder = '',\n formatRelativeRange,\n absoluteFormat,\n hideTimeOffset,\n timeOffset,\n}: {\n locale?: string;\n range: null | DateRangePickerProps.Value;\n placeholder?: string;\n formatRelativeRange: DateRangePickerProps.I18nStrings['formatRelativeRange'];\n absoluteFormat: DateRangePickerProps.AbsoluteFormat;\n hideTimeOffset?: boolean;\n timeOffset: { startDate?: number; endDate?: number };\n}) {\n const firstPart = range\n ? range.type === 'relative'\n ? formatRelativeRange?.(range) ?? ''\n : formatDateTimeWithOffset({\n date: range.startDate,\n timeOffset: timeOffset.startDate,\n hideTimeOffset,\n format: absoluteFormat,\n locale,\n })\n : placeholder;\n\n const secondPart =\n range?.type === 'absolute'\n ? formatDateTimeWithOffset({\n date: range.endDate,\n timeOffset: timeOffset.endDate,\n hideTimeOffset,\n format: absoluteFormat,\n locale,\n })\n : '';\n\n return (\n <span className={(!range && styles['label-text']) || undefined} aria-disabled={!range}>\n <span className={range?.type === 'absolute' ? styles['label-token-nowrap'] : undefined}>{firstPart}</span>\n <span>{secondPart && ' — '}</span>\n <span className={styles['label-token-nowrap']}>{secondPart}</span>\n </span>\n );\n}\n\nconst DateRangePicker = React.forwardRef(\n (\n {\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n dateDisabledReason,\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,\n getTimeOffset,\n timeInputFormat = 'hh:mm:ss',\n expandToViewport = false,\n rangeSelectorMode = 'default',\n customAbsoluteRangeControl,\n absoluteFormat = 'iso',\n hideTimeOffset,\n customRelativeRangeUnits,\n granularity = 'day',\n ...rest\n }: DateRangePickerProps,\n ref: Ref<DateRangePickerProps.Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('DateRangePicker', {\n props: {\n absoluteFormat,\n dateOnly,\n expandToViewport,\n rangeSelectorMode,\n readOnly,\n showClearButton,\n timeInputFormat,\n hideTimeOffset,\n granularity,\n },\n metadata: { hasDisabledReasons: Boolean(dateDisabledReason) },\n });\n const isMonthOnly = granularity === 'month';\n const hideTime = dateOnly || isMonthOnly;\n checkControlled('DateRangePicker', 'value', value, 'onChange', onChange);\n\n const normalizedTimeOffset = hideTime\n ? { startDate: undefined, endDate: undefined }\n : normalizeTimeOffset(value, getTimeOffset, timeOffset);\n value = formatInitialValue(value, dateOnly, isMonthOnly, normalizedTimeOffset);\n const baseProps = getBaseProps(rest);\n const { invalid, warning, 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 const triggerContentId = useUniqueId('date-range-picker-trigger');\n\n useFocusTracker({ rootRef, onBlur, onFocus });\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 if (isDropDownOpen) {\n event.stopPropagation();\n }\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 formattedValue = formatValue(newValue, {\n dateOnly,\n monthOnly: isMonthOnly,\n timeOffset: hideTime\n ? { startDate: undefined, endDate: undefined }\n : normalizeTimeOffset(newValue, getTimeOffset, timeOffset),\n });\n\n const validationResult = isValidRange(formattedValue);\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: formattedValue });\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 i18n = useInternalI18n('date-range-picker');\n const formatRelativeRange = i18n(\n 'i18nStrings.formatRelativeRange',\n i18nStrings?.formatRelativeRange,\n format =>\n ({ amount, unit }) =>\n format({ amount, unit })\n );\n\n if (isDevelopment) {\n if (!formatRelativeRange && rangeSelectorMode !== 'absolute-only') {\n warnOnce(\n 'DateRangePicker',\n 'A function for i18nStrings.formatRelativeRange was not provided. Relative ranges will not be correctly rendered.'\n );\n }\n }\n\n const formattedDate: string | JSX.Element = renderDateRange({\n locale: normalizedLocale,\n range: value,\n placeholder,\n formatRelativeRange,\n absoluteFormat,\n hideTimeOffset: hideTime || hideTimeOffset,\n timeOffset: normalizedTimeOffset,\n });\n\n const trigger = (\n <ButtonTrigger\n ref={triggerRef}\n id={controlId}\n invalid={invalid}\n warning={warning}\n ariaLabelledby={joinStrings(ariaLabelledby, triggerContentId)}\n ariaLabel={i18nStrings?.ariaLabel}\n ariaDescribedby={ariaDescribedby}\n className={clsx(testutilStyles.label, styles.label, {\n [styles['label-enabled']]: !readOnly && !disabled,\n })}\n hideCaret={true}\n onClick={() => {\n setIsDropDownOpen(true);\n }}\n disabled={disabled}\n readOnly={readOnly}\n ariaHasPopup=\"dialog\"\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 <span id={triggerContentId}>{formattedDate}</span>\n </span>\n </ButtonTrigger>\n );\n\n const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n return (\n <div\n {...baseProps}\n ref={mergedRef}\n className={clsx(\n baseProps.className,\n styles.root,\n testutilStyles.root,\n absoluteFormat === 'long-localized' && !dateOnly && !isMonthOnly && styles.wide\n )}\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 {/* Reset form field context to prevent a wrapper form field from labelling all inputs inside the dropdown. */}\n <ResetContextsForModal>\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 dateDisabledReason={dateDisabledReason}\n i18nStrings={i18nStrings}\n onClear={onClear}\n onApply={onApply}\n getTimeOffset={getTimeOffset}\n timeOffset={timeOffset}\n relativeOptions={relativeOptions}\n isValidRange={isValidRange}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n rangeSelectorMode={rangeSelectorMode}\n ariaLabelledby={ariaLabelledby}\n ariaDescribedby={ariaDescribedby}\n customAbsoluteRangeControl={customAbsoluteRangeControl}\n customRelativeRangeUnits={customRelativeRangeUnits}\n granularity={granularity}\n />\n )}\n </ResetContextsForModal>\n </Dropdown>\n </div>\n );\n }\n);\n\napplyDisplayName(DateRangePicker, 'DateRangePicker');\nexport default DateRangePicker;\n"]}