@cloudscape-design/components-themeable 3.0.974 → 3.0.976

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 (131) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/drawer/styles.scss +14 -0
  3. package/lib/internal/scss/link/styles.scss +1 -1
  4. package/lib/internal/template/annotation-context/index.js +2 -2
  5. package/lib/internal/template/annotation-context/index.js.map +1 -1
  6. package/lib/internal/template/app-layout/runtime-drawer/index.js +1 -1
  7. package/lib/internal/template/app-layout/runtime-drawer/index.js.map +1 -1
  8. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.d.ts +6 -0
  9. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.d.ts.map +1 -0
  10. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.js +29 -0
  11. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.js.map +1 -0
  12. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.d.ts.map +1 -1
  13. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.js +1 -1
  14. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.js.map +1 -1
  15. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/local-drawer.d.ts.map +1 -1
  16. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/local-drawer.js +1 -1
  17. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/local-drawer.js.map +1 -1
  18. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.d.ts.map +1 -1
  19. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js +1 -1
  20. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js.map +1 -1
  21. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  22. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +7 -2
  23. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  24. package/lib/internal/template/app-layout-toolbar/analytics-metadata/interfaces.d.ts +18 -0
  25. package/lib/internal/template/app-layout-toolbar/analytics-metadata/interfaces.d.ts.map +1 -0
  26. package/lib/internal/template/app-layout-toolbar/analytics-metadata/interfaces.js +4 -0
  27. package/lib/internal/template/app-layout-toolbar/analytics-metadata/interfaces.js.map +1 -0
  28. package/lib/internal/template/app-layout-toolbar/index.d.ts.map +1 -1
  29. package/lib/internal/template/app-layout-toolbar/index.js +9 -1
  30. package/lib/internal/template/app-layout-toolbar/index.js.map +1 -1
  31. package/lib/internal/template/date-input/internal.d.ts.map +1 -1
  32. package/lib/internal/template/date-input/internal.js +3 -16
  33. package/lib/internal/template/date-input/internal.js.map +1 -1
  34. package/lib/internal/template/date-input/utils.d.ts +7 -0
  35. package/lib/internal/template/date-input/utils.d.ts.map +1 -0
  36. package/lib/internal/template/date-input/utils.js +25 -0
  37. package/lib/internal/template/date-input/utils.js.map +1 -0
  38. package/lib/internal/template/date-range-picker/calendar/grids/index.js.map +1 -1
  39. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts +3 -4
  40. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts.map +1 -1
  41. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.js.map +1 -1
  42. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts +0 -2
  43. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts.map +1 -1
  44. package/lib/internal/template/date-range-picker/calendar/header/header-button.js.map +1 -1
  45. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts +2 -3
  46. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts.map +1 -1
  47. package/lib/internal/template/date-range-picker/calendar/header/index.js.map +1 -1
  48. package/lib/internal/template/date-range-picker/calendar/index.d.ts +2 -2
  49. package/lib/internal/template/date-range-picker/calendar/index.d.ts.map +1 -1
  50. package/lib/internal/template/date-range-picker/calendar/index.js.map +1 -1
  51. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts +3 -3
  52. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts.map +1 -1
  53. package/lib/internal/template/date-range-picker/calendar/range-inputs.js.map +1 -1
  54. package/lib/internal/template/date-range-picker/dropdown.d.ts +2 -2
  55. package/lib/internal/template/date-range-picker/dropdown.d.ts.map +1 -1
  56. package/lib/internal/template/date-range-picker/dropdown.js.map +1 -1
  57. package/lib/internal/template/date-range-picker/interfaces.d.ts +2 -7
  58. package/lib/internal/template/date-range-picker/interfaces.d.ts.map +1 -1
  59. package/lib/internal/template/date-range-picker/interfaces.js.map +1 -1
  60. package/lib/internal/template/date-range-picker/relative-range/index.d.ts +2 -2
  61. package/lib/internal/template/date-range-picker/relative-range/index.d.ts.map +1 -1
  62. package/lib/internal/template/date-range-picker/relative-range/index.js.map +1 -1
  63. package/lib/internal/template/drawer/implementation.d.ts +1 -1
  64. package/lib/internal/template/drawer/implementation.d.ts.map +1 -1
  65. package/lib/internal/template/drawer/implementation.js +4 -2
  66. package/lib/internal/template/drawer/implementation.js.map +1 -1
  67. package/lib/internal/template/drawer/interfaces.d.ts +4 -0
  68. package/lib/internal/template/drawer/interfaces.d.ts.map +1 -1
  69. package/lib/internal/template/drawer/interfaces.js.map +1 -1
  70. package/lib/internal/template/drawer/styles.css.js +6 -5
  71. package/lib/internal/template/drawer/styles.scoped.css +23 -10
  72. package/lib/internal/template/drawer/styles.selectors.js +6 -5
  73. package/lib/internal/template/i18n/provider.js +2 -2
  74. package/lib/internal/template/i18n/provider.js.map +1 -1
  75. package/lib/internal/template/internal/components/drag-handle/index.d.ts.map +1 -1
  76. package/lib/internal/template/internal/components/drag-handle/index.js +2 -2
  77. package/lib/internal/template/internal/components/drag-handle/index.js.map +1 -1
  78. package/lib/internal/template/internal/components/drag-handle/interfaces.d.ts +2 -1
  79. package/lib/internal/template/internal/components/drag-handle/interfaces.d.ts.map +1 -1
  80. package/lib/internal/template/internal/components/drag-handle/interfaces.js.map +1 -1
  81. package/lib/internal/template/internal/components/drag-handle-wrapper/index.d.ts +1 -1
  82. package/lib/internal/template/internal/components/drag-handle-wrapper/index.d.ts.map +1 -1
  83. package/lib/internal/template/internal/components/drag-handle-wrapper/index.js +8 -2
  84. package/lib/internal/template/internal/components/drag-handle-wrapper/index.js.map +1 -1
  85. package/lib/internal/template/internal/components/drag-handle-wrapper/interfaces.d.ts +2 -0
  86. package/lib/internal/template/internal/components/drag-handle-wrapper/interfaces.d.ts.map +1 -1
  87. package/lib/internal/template/internal/components/drag-handle-wrapper/interfaces.js.map +1 -1
  88. package/lib/internal/template/internal/components/drag-handle-wrapper/portal-overlay.d.ts.map +1 -1
  89. package/lib/internal/template/internal/components/drag-handle-wrapper/portal-overlay.js +2 -1
  90. package/lib/internal/template/internal/components/drag-handle-wrapper/portal-overlay.js.map +1 -1
  91. package/lib/internal/template/internal/environment.js +1 -1
  92. package/lib/internal/template/internal/environment.json +1 -1
  93. package/lib/internal/template/internal/generated/theming/index.cjs +4 -0
  94. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +18 -0
  95. package/lib/internal/template/internal/generated/theming/index.d.ts +18 -0
  96. package/lib/internal/template/internal/generated/theming/index.js +4 -0
  97. package/lib/internal/template/internal/hooks/use-base-component/index.d.ts.map +1 -1
  98. package/lib/internal/template/internal/hooks/use-base-component/index.js +8 -5
  99. package/lib/internal/template/internal/hooks/use-base-component/index.js.map +1 -1
  100. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.d.ts +2 -0
  101. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.d.ts.map +1 -1
  102. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.js.map +1 -1
  103. package/lib/internal/template/internal/plugins/controllers/drawers.d.ts +6 -0
  104. package/lib/internal/template/internal/plugins/controllers/drawers.d.ts.map +1 -1
  105. package/lib/internal/template/internal/plugins/controllers/drawers.js +17 -1
  106. package/lib/internal/template/internal/plugins/controllers/drawers.js.map +1 -1
  107. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.d.ts +7 -7
  108. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.d.ts.map +1 -1
  109. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.js +5 -2
  110. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.js.map +1 -1
  111. package/lib/internal/template/link/styles.css.js +20 -20
  112. package/lib/internal/template/link/styles.scoped.css +73 -71
  113. package/lib/internal/template/link/styles.selectors.js +20 -20
  114. package/lib/internal/template/popover/container.d.ts.map +1 -1
  115. package/lib/internal/template/popover/container.js +20 -7
  116. package/lib/internal/template/popover/container.js.map +1 -1
  117. package/lib/internal/template/table/body-cell/inline-editor.d.ts.map +1 -1
  118. package/lib/internal/template/table/body-cell/inline-editor.js +2 -1
  119. package/lib/internal/template/table/body-cell/inline-editor.js.map +1 -1
  120. package/lib/internal/template/test-utils/dom/drawer/index.d.ts +1 -0
  121. package/lib/internal/template/test-utils/dom/drawer/index.js +3 -0
  122. package/lib/internal/template/test-utils/dom/drawer/index.js.map +1 -1
  123. package/lib/internal/template/test-utils/selectors/drawer/index.d.ts +1 -0
  124. package/lib/internal/template/test-utils/selectors/drawer/index.js +3 -0
  125. package/lib/internal/template/test-utils/selectors/drawer/index.js.map +1 -1
  126. package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
  127. package/package.json +1 -1
  128. package/lib/internal/template/internal/hooks/use-telemetry/index.d.ts +0 -3
  129. package/lib/internal/template/internal/hooks/use-telemetry/index.d.ts.map +0 -1
  130. package/lib/internal/template/internal/hooks/use-telemetry/index.js +0 -12
  131. package/lib/internal/template/internal/hooks/use-telemetry/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/app-layout-toolbar/analytics-metadata/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { LabelIdentifier } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nexport interface GeneratedAnalyticsMetadataAppLayoutToolbarOpen {\n action: 'open';\n detail: {\n label: string | LabelIdentifier;\n };\n}\n\nexport interface GeneratedAnalyticsMetadataAppLayoutToolbarClose {\n action: 'close';\n detail: {\n label: string | LabelIdentifier;\n };\n}\n\nexport interface GeneratedAnalyticsMetadataAppLayoutToolbarComponent {\n name: 'awsui.AppLayoutToolbar';\n label: LabelIdentifier;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app-layout-toolbar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAc1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,QAAA,MAAM,gBAAgB,kGA+GrB,CAAC;AAGF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app-layout-toolbar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAe1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,QAAA,MAAM,gBAAgB,kGA2HrB,CAAC;AAGF,eAAe,gBAAgB,CAAC"}
@@ -3,6 +3,7 @@ import { __rest } from "tslib";
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import React from 'react';
5
5
  import { warnOnce } from '@cloudscape-design/component-toolkit/internal';
6
+ import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
6
7
  import { applyDefaults } from '../app-layout/defaults';
7
8
  import { useAppLayoutPlacement } from '../app-layout/utils/use-app-layout-placement';
8
9
  import AppLayoutToolbarInternal from '../app-layout/visual-refresh-toolbar';
@@ -76,8 +77,15 @@ const AppLayoutToolbar = React.forwardRef((_a, ref) => {
76
77
  onNavigationChange }, restDefaults), rest), { ariaLabels,
77
78
  placement });
78
79
  const baseProps = getBaseProps(rest);
80
+ const componentAnalyticsMetadata = {
81
+ name: 'awsui.AppLayoutToolbar',
82
+ label: {
83
+ selector: 'h1',
84
+ root: 'body',
85
+ },
86
+ };
79
87
  return (React.createElement(AppLayoutToolbarPublicContext.Provider, { value: true },
80
- React.createElement("div", Object.assign({ ref: useMergeRefs(__internalRootRef, rootRef) }, baseProps),
88
+ React.createElement("div", Object.assign({ ref: useMergeRefs(__internalRootRef, rootRef) }, baseProps, getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata })),
81
89
  React.createElement(AppLayoutToolbarInternal, Object.assign({ ref: ref }, props)))));
82
90
  });
83
91
  applyDisplayName(AppLayoutToolbar, 'AppLayoutToolbar');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app-layout-toolbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { applyDefaults } from '../app-layout/defaults';\nimport { AppLayoutProps } from '../app-layout/interfaces';\nimport { useAppLayoutPlacement } from '../app-layout/utils/use-app-layout-placement';\nimport AppLayoutToolbarInternal from '../app-layout/visual-refresh-toolbar';\nimport { AppLayoutToolbarPublicContext } from '../app-layout/visual-refresh-toolbar/contexts';\nimport { useInternalI18n } from '../i18n/context';\nimport { getBaseProps } from '../internal/base-component';\nimport { NonCancelableCustomEvent } from '../internal/events';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { AppLayoutToolbarProps } from './interfaces';\n\nexport { AppLayoutToolbarProps };\n\nconst AppLayoutToolbar = React.forwardRef(\n (\n {\n contentType = 'default',\n headerSelector = '#b #h',\n footerSelector = '#b #f',\n navigationWidth = 280,\n toolsWidth = 290,\n maxContentWidth,\n minContentWidth,\n navigationOpen: controlledNavigationOpen,\n onNavigationChange: controlledOnNavigationChange,\n analyticsMetadata,\n ...rest\n }: AppLayoutToolbarProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n const isRefresh = useVisualRefresh();\n if (!isRefresh) {\n throw new Error(\n `AppLayoutToolbar component is not supported in the Classic theme. Please switch to the Refresh theme. For more details, refer to the documentation.`\n );\n }\n if (isDevelopment) {\n if (rest.toolsOpen && rest.toolsHide) {\n warnOnce(\n 'AppLayoutToolbar',\n `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n );\n }\n }\n const { __internalRootRef } = useBaseComponent<HTMLDivElement>(\n 'AppLayoutToolbar',\n {\n props: {\n contentType,\n disableContentPaddings: rest.disableContentPaddings,\n navigationWidth,\n navigationHide: rest.navigationHide,\n toolsHide: rest.toolsHide,\n toolsWidth,\n maxContentWidth,\n minContentWidth,\n stickyNotifications: rest.stickyNotifications,\n disableContentHeaderOverlap: rest.disableContentHeaderOverlap,\n navigationTriggerHide: rest.navigationTriggerHide,\n },\n metadata: {\n drawersCount: rest.drawers?.length ?? null,\n hasContentHeader: !!rest.contentHeader,\n },\n },\n analyticsMetadata\n );\n const isMobile = useMobile();\n\n const i18n = useInternalI18n('app-layout');\n const ariaLabels = {\n navigation: i18n('ariaLabels.navigation', rest.ariaLabels?.navigation),\n navigationClose: i18n('ariaLabels.navigationClose', rest.ariaLabels?.navigationClose),\n navigationToggle: i18n('ariaLabels.navigationToggle', rest.ariaLabels?.navigationToggle),\n notifications: i18n('ariaLabels.notifications', rest.ariaLabels?.notifications),\n tools: i18n('ariaLabels.tools', rest.ariaLabels?.tools),\n toolsClose: i18n('ariaLabels.toolsClose', rest.ariaLabels?.toolsClose),\n toolsToggle: i18n('ariaLabels.toolsToggle', rest.ariaLabels?.toolsToggle),\n drawers: i18n('ariaLabels.drawers', rest.ariaLabels?.drawers),\n drawersOverflow: i18n('ariaLabels.drawersOverflow', rest.ariaLabels?.drawersOverflow),\n drawersOverflowWithBadge: i18n('ariaLabels.drawersOverflowWithBadge', rest.ariaLabels?.drawersOverflowWithBadge),\n };\n const { navigationOpen: defaultNavigationOpen, ...restDefaults } = applyDefaults(\n contentType,\n { maxContentWidth, minContentWidth },\n isRefresh\n );\n\n const [navigationOpen = false, setNavigationOpen] = useControllable(\n controlledNavigationOpen,\n controlledOnNavigationChange,\n isMobile ? false : defaultNavigationOpen,\n { componentName: 'AppLayoutToolbar', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n );\n const onNavigationChange = (event: NonCancelableCustomEvent<AppLayoutProps.ChangeDetail>) => {\n setNavigationOpen(event.detail.open);\n controlledOnNavigationChange?.(event);\n };\n\n const [rootRef, placement] = useAppLayoutPlacement(headerSelector, footerSelector);\n\n // This re-builds the props including the default values\n const props = {\n contentType,\n navigationWidth,\n toolsWidth,\n navigationOpen,\n onNavigationChange,\n ...restDefaults,\n ...rest,\n ariaLabels,\n placement,\n };\n\n const baseProps = getBaseProps(rest);\n\n return (\n <AppLayoutToolbarPublicContext.Provider value={true}>\n <div ref={useMergeRefs(__internalRootRef, rootRef)} {...baseProps}>\n <AppLayoutToolbarInternal ref={ref} {...props} />\n </div>\n </AppLayoutToolbarPublicContext.Provider>\n );\n }\n);\n\napplyDisplayName(AppLayoutToolbar, 'AppLayoutToolbar');\nexport default AppLayoutToolbar;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app-layout-toolbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { applyDefaults } from '../app-layout/defaults';\nimport { AppLayoutProps } from '../app-layout/interfaces';\nimport { useAppLayoutPlacement } from '../app-layout/utils/use-app-layout-placement';\nimport AppLayoutToolbarInternal from '../app-layout/visual-refresh-toolbar';\nimport { AppLayoutToolbarPublicContext } from '../app-layout/visual-refresh-toolbar/contexts';\nimport { useInternalI18n } from '../i18n/context';\nimport { getBaseProps } from '../internal/base-component';\nimport { NonCancelableCustomEvent } from '../internal/events';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { GeneratedAnalyticsMetadataAppLayoutToolbarComponent } from './analytics-metadata/interfaces';\nimport { AppLayoutToolbarProps } from './interfaces';\n\nexport { AppLayoutToolbarProps };\n\nconst AppLayoutToolbar = React.forwardRef(\n (\n {\n contentType = 'default',\n headerSelector = '#b #h',\n footerSelector = '#b #f',\n navigationWidth = 280,\n toolsWidth = 290,\n maxContentWidth,\n minContentWidth,\n navigationOpen: controlledNavigationOpen,\n onNavigationChange: controlledOnNavigationChange,\n analyticsMetadata,\n ...rest\n }: AppLayoutToolbarProps,\n ref: React.Ref<AppLayoutProps.Ref>\n ) => {\n const isRefresh = useVisualRefresh();\n if (!isRefresh) {\n throw new Error(\n `AppLayoutToolbar component is not supported in the Classic theme. Please switch to the Refresh theme. For more details, refer to the documentation.`\n );\n }\n if (isDevelopment) {\n if (rest.toolsOpen && rest.toolsHide) {\n warnOnce(\n 'AppLayoutToolbar',\n `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n );\n }\n }\n const { __internalRootRef } = useBaseComponent<HTMLDivElement>(\n 'AppLayoutToolbar',\n {\n props: {\n contentType,\n disableContentPaddings: rest.disableContentPaddings,\n navigationWidth,\n navigationHide: rest.navigationHide,\n toolsHide: rest.toolsHide,\n toolsWidth,\n maxContentWidth,\n minContentWidth,\n stickyNotifications: rest.stickyNotifications,\n disableContentHeaderOverlap: rest.disableContentHeaderOverlap,\n navigationTriggerHide: rest.navigationTriggerHide,\n },\n metadata: {\n drawersCount: rest.drawers?.length ?? null,\n hasContentHeader: !!rest.contentHeader,\n },\n },\n analyticsMetadata\n );\n const isMobile = useMobile();\n\n const i18n = useInternalI18n('app-layout');\n const ariaLabels = {\n navigation: i18n('ariaLabels.navigation', rest.ariaLabels?.navigation),\n navigationClose: i18n('ariaLabels.navigationClose', rest.ariaLabels?.navigationClose),\n navigationToggle: i18n('ariaLabels.navigationToggle', rest.ariaLabels?.navigationToggle),\n notifications: i18n('ariaLabels.notifications', rest.ariaLabels?.notifications),\n tools: i18n('ariaLabels.tools', rest.ariaLabels?.tools),\n toolsClose: i18n('ariaLabels.toolsClose', rest.ariaLabels?.toolsClose),\n toolsToggle: i18n('ariaLabels.toolsToggle', rest.ariaLabels?.toolsToggle),\n drawers: i18n('ariaLabels.drawers', rest.ariaLabels?.drawers),\n drawersOverflow: i18n('ariaLabels.drawersOverflow', rest.ariaLabels?.drawersOverflow),\n drawersOverflowWithBadge: i18n('ariaLabels.drawersOverflowWithBadge', rest.ariaLabels?.drawersOverflowWithBadge),\n };\n const { navigationOpen: defaultNavigationOpen, ...restDefaults } = applyDefaults(\n contentType,\n { maxContentWidth, minContentWidth },\n isRefresh\n );\n\n const [navigationOpen = false, setNavigationOpen] = useControllable(\n controlledNavigationOpen,\n controlledOnNavigationChange,\n isMobile ? false : defaultNavigationOpen,\n { componentName: 'AppLayoutToolbar', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n );\n const onNavigationChange = (event: NonCancelableCustomEvent<AppLayoutProps.ChangeDetail>) => {\n setNavigationOpen(event.detail.open);\n controlledOnNavigationChange?.(event);\n };\n\n const [rootRef, placement] = useAppLayoutPlacement(headerSelector, footerSelector);\n\n // This re-builds the props including the default values\n const props = {\n contentType,\n navigationWidth,\n toolsWidth,\n navigationOpen,\n onNavigationChange,\n ...restDefaults,\n ...rest,\n ariaLabels,\n placement,\n };\n\n const baseProps = getBaseProps(rest);\n\n const componentAnalyticsMetadata: GeneratedAnalyticsMetadataAppLayoutToolbarComponent = {\n name: 'awsui.AppLayoutToolbar',\n label: {\n selector: 'h1',\n root: 'body',\n },\n };\n\n return (\n <AppLayoutToolbarPublicContext.Provider value={true}>\n <div\n ref={useMergeRefs(__internalRootRef, rootRef)}\n {...baseProps}\n {...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata })}\n >\n <AppLayoutToolbarInternal ref={ref} {...props} />\n </div>\n </AppLayoutToolbarPublicContext.Provider>\n );\n }\n);\n\napplyDisplayName(AppLayoutToolbar, 'AppLayoutToolbar');\nexport default AppLayoutToolbar;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/date-input/internal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAc,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmB9C,QAAA,MAAM,iBAAiB;;0CA2BtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/date-input/internal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAc,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAU9C,QAAA,MAAM,iBAAiB;;0CAqBtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -3,27 +3,14 @@
3
3
  import { __rest } from "tslib";
4
4
  import React from 'react';
5
5
  import clsx from 'clsx';
6
- import { getDaysInMonth } from 'date-fns';
7
6
  import MaskedInput from '../internal/components/masked-input';
8
7
  import { fireNonCancelableEvent } from '../internal/events';
9
- import { displayToIso, isoToDisplay, parseDate } from '../internal/utils/date-time';
8
+ import { displayToIso, isoToDisplay } from '../internal/utils/date-time';
9
+ import { generateMaskArgs } from './utils';
10
10
  import styles from './styles.css.js';
11
- function daysMax(value) {
12
- // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018
13
- const baseDate = displayToIso(value).substring(0, 7);
14
- return getDaysInMonth(parseDate(baseDate));
15
- }
16
- const yearMask = { min: 0, max: 9999, default: 2000, length: 4 };
17
- const monthMask = { min: 1, max: 12, length: 2 };
18
- const dayMask = { min: 1, max: daysMax, length: 2 };
19
11
  const InternalDateInput = React.forwardRef((_a, ref) => {
20
12
  var { value, onChange, granularity, __internalRootRef = null } = _a, props = __rest(_a, ["value", "onChange", "granularity", "__internalRootRef"]);
21
- const maskArgs = {
22
- separator: '/',
23
- inputSeparators: ['-', '.', ' '],
24
- segments: granularity === 'month' ? [yearMask, monthMask] : [yearMask, monthMask, dayMask],
25
- };
26
- return (React.createElement(MaskedInput, Object.assign({ ref: ref }, props, { value: isoToDisplay(value || ''), onChange: event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) }), className: clsx(styles.root, props.className), mask: maskArgs, autofix: true, autoComplete: false, disableAutocompleteOnBlur: false, disableBrowserAutocorrect: true, __internalRootRef: __internalRootRef })));
13
+ return (React.createElement(MaskedInput, Object.assign({ ref: ref }, props, { value: isoToDisplay(value || ''), onChange: event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) }), className: clsx(styles.root, props.className), mask: generateMaskArgs({ granularity }), autofix: true, autoComplete: false, disableAutocompleteOnBlur: false, disableBrowserAutocorrect: true, __internalRootRef: __internalRootRef })));
27
14
  });
28
15
  export default InternalDateInput;
29
16
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/date-input/internal.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGpF,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAOrC,SAAS,OAAO,CAAC,KAAa;IAC5B,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjE,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAEpD,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CACxC,CACE,EAA4F,EAC5F,GAA0B,EAC1B,EAAE;QAFF,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,OAAoC,EAA/B,KAAK,cAAlE,yDAAoE,CAAF;IAGlE,MAAM,QAAQ,GAAa;QACzB,SAAS,EAAE,GAAG;QACd,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAChC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;KAC3F,CAAC;IAEF,OAAO,CACL,oBAAC,WAAW,kBACV,GAAG,EAAE,GAAG,IACJ,KAAK,IACT,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAChC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAChG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAC7C,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,KAAK,EACnB,yBAAyB,EAAE,KAAK,EAChC,yBAAyB,EAAE,IAAI,EAC/B,iBAAiB,EAAE,iBAAiB,IACpC,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { Ref } from 'react';\nimport clsx from 'clsx';\nimport { getDaysInMonth } from 'date-fns';\n\nimport { CalendarProps } from '../calendar/interfaces';\nimport MaskedInput from '../internal/components/masked-input';\nimport { MaskArgs } from '../internal/components/masked-input/utils/mask-format';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { displayToIso, isoToDisplay, parseDate } from '../internal/utils/date-time';\nimport { DateInputProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype InternalDateInputProps = DateInputProps &\n InternalBaseComponentProps & {\n granularity?: CalendarProps.Granularity;\n };\n\nfunction daysMax(value: string): number {\n // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018\n const baseDate = displayToIso(value).substring(0, 7);\n return getDaysInMonth(parseDate(baseDate));\n}\n\nconst yearMask = { min: 0, max: 9999, default: 2000, length: 4 };\nconst monthMask = { min: 1, max: 12, length: 2 };\nconst dayMask = { min: 1, max: daysMax, length: 2 };\n\nconst InternalDateInput = React.forwardRef(\n (\n { value, onChange, granularity, __internalRootRef = null, ...props }: InternalDateInputProps,\n ref: Ref<HTMLInputElement>\n ) => {\n const maskArgs: MaskArgs = {\n separator: '/',\n inputSeparators: ['-', '.', ' '],\n segments: granularity === 'month' ? [yearMask, monthMask] : [yearMask, monthMask, dayMask],\n };\n\n return (\n <MaskedInput\n ref={ref}\n {...props}\n value={isoToDisplay(value || '')}\n onChange={event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) })}\n className={clsx(styles.root, props.className)}\n mask={maskArgs}\n autofix={true}\n autoComplete={false}\n disableAutocompleteOnBlur={false}\n disableBrowserAutocorrect={true}\n __internalRootRef={__internalRootRef}\n />\n );\n }\n);\n\nexport default InternalDateInput;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/date-input/internal.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAOrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CACxC,CACE,EAA4F,EAC5F,GAA0B,EAC1B,EAAE;QAFF,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,OAAoC,EAA/B,KAAK,cAAlE,yDAAoE,CAAF;IAGlE,OAAO,CACL,oBAAC,WAAW,kBACV,GAAG,EAAE,GAAG,IACJ,KAAK,IACT,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAChC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAChG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAC7C,IAAI,EAAE,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC,EACvC,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,KAAK,EACnB,yBAAyB,EAAE,KAAK,EAChC,yBAAyB,EAAE,IAAI,EAC/B,iBAAiB,EAAE,iBAAiB,IACpC,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { Ref } from 'react';\nimport clsx from 'clsx';\n\nimport { CalendarProps } from '../calendar/interfaces';\nimport MaskedInput from '../internal/components/masked-input';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { displayToIso, isoToDisplay } from '../internal/utils/date-time';\nimport { DateInputProps } from './interfaces';\nimport { generateMaskArgs } from './utils';\n\nimport styles from './styles.css.js';\n\ntype InternalDateInputProps = DateInputProps &\n InternalBaseComponentProps & {\n granularity?: CalendarProps.Granularity;\n };\n\nconst InternalDateInput = React.forwardRef(\n (\n { value, onChange, granularity, __internalRootRef = null, ...props }: InternalDateInputProps,\n ref: Ref<HTMLInputElement>\n ) => {\n return (\n <MaskedInput\n ref={ref}\n {...props}\n value={isoToDisplay(value || '')}\n onChange={event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) })}\n className={clsx(styles.root, props.className)}\n mask={generateMaskArgs({ granularity })}\n autofix={true}\n autoComplete={false}\n disableAutocompleteOnBlur={false}\n disableBrowserAutocorrect={true}\n __internalRootRef={__internalRootRef}\n />\n );\n }\n);\n\nexport default InternalDateInput;\n"]}
@@ -0,0 +1,7 @@
1
+ import { CalendarProps } from '../calendar/interfaces';
2
+ import { MaskArgs } from '../internal/components/masked-input/utils/mask-format';
3
+ export interface GenerateMaskArgsProps extends Pick<CalendarProps, 'granularity'> {
4
+ isIso?: boolean;
5
+ }
6
+ export declare const generateMaskArgs: ({ granularity, isIso, }?: GenerateMaskArgsProps) => MaskArgs;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/date-input/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uDAAuD,CAAC;AAajF,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,6BAO1B,qBAAqB,KAAQ,QAM/B,CAAC"}
@@ -0,0 +1,25 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { getDaysInMonth } from 'date-fns';
4
+ import { displayToIso, parseDate } from '../internal/utils/date-time';
5
+ function daysMax(value) {
6
+ // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018
7
+ const baseDate = displayToIso(value).substring(0, 7);
8
+ return getDaysInMonth(parseDate(baseDate));
9
+ }
10
+ const yearMask = { min: 0, max: 9999, default: 2000, length: 4 };
11
+ const monthMask = { min: 1, max: 12, length: 2 };
12
+ const dayMask = { min: 1, max: daysMax, length: 2 };
13
+ export const generateMaskArgs = ({ granularity = 'day',
14
+ /**
15
+ * There are only two options, 'iso' and 'slashed' which is our current default format. If more formats are entered
16
+ * we should take the formatting type rather than teh boolean when we make an update
17
+ */
18
+ isIso = false, } = {}) => {
19
+ return {
20
+ separator: isIso ? '-' : '/',
21
+ inputSeparators: [...(isIso ? ['/'] : ['-']), '.', ' '],
22
+ segments: granularity === 'month' ? [yearMask, monthMask] : [yearMask, monthMask, dayMask],
23
+ };
24
+ };
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/date-input/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEtE,SAAS,OAAO,CAAC,KAAa;IAC5B,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjE,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAMpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,WAAW,GAAG,KAAK;AACnB;;;GAGG;AACH,KAAK,GAAG,KAAK,MACY,EAAE,EAAY,EAAE;IACzC,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QAC5B,eAAe,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QACvD,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;KAC3F,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getDaysInMonth } from 'date-fns';\n\nimport { CalendarProps } from '../calendar/interfaces';\nimport { MaskArgs } from '../internal/components/masked-input/utils/mask-format';\nimport { displayToIso, parseDate } from '../internal/utils/date-time';\n\nfunction daysMax(value: string): number {\n // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018\n const baseDate = displayToIso(value).substring(0, 7);\n return getDaysInMonth(parseDate(baseDate));\n}\n\nconst yearMask = { min: 0, max: 9999, default: 2000, length: 4 };\nconst monthMask = { min: 1, max: 12, length: 2 };\nconst dayMask = { min: 1, max: daysMax, length: 2 };\n\nexport interface GenerateMaskArgsProps extends Pick<CalendarProps, 'granularity'> {\n isIso?: boolean;\n}\n\nexport const generateMaskArgs = ({\n granularity = 'day',\n /**\n * There are only two options, 'iso' and 'slashed' which is our current default format. If more formats are entered\n * we should take the formatting type rather than teh boolean when we make an update\n */\n isIso = false,\n}: GenerateMaskArgsProps = {}): MaskArgs => {\n return {\n separator: isIso ? '-' : '/',\n inputSeparators: [...(isIso ? ['/'] : ['-']), '.', ' '],\n segments: granularity === 'month' ? [yearMask, monthMask] : [yearMask, monthMask, dayMask],\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { addMonths, addYears, isAfter, isBefore, isSameMonth, isSameYear, max, min } from 'date-fns';\n\nimport {\n getBaseDay,\n moveNextDay,\n moveNextWeek,\n movePrevDay,\n movePrevWeek,\n} from '../../../calendar/utils/navigation-day';\nimport {\n getBaseMonth,\n moveMonthDown,\n moveMonthUp,\n moveNextMonth,\n movePrevMonth,\n} from '../../../calendar/utils/navigation-month';\nimport { useDateCache } from '../../../internal/hooks/use-date-cache';\nimport { KeyCode } from '../../../internal/keycode';\nimport handleKey from '../../../internal/utils/handle-key';\nimport { hasValue } from '../../../internal/utils/has-value';\nimport InternalSpaceBetween from '../../../space-between/internal';\nimport { DateRangePickerProps } from '../../interfaces';\nimport { findDateToFocus } from '../utils';\nimport { Grid } from './grid';\nimport { SelectGridProps } from './interfaces';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\n\nfunction isVisible(date: Date, baseDate: Date, isSingleGrid: boolean, granularity: DateRangePickerProps.Granularity) {\n const isSame = granularity === 'day' ? isSameMonth : isSameYear;\n const add = granularity === 'day' ? addMonths : addYears;\n if (isSingleGrid) {\n return isSame(date, baseDate);\n }\n\n const previous = add(baseDate, -1);\n\n return isSame(date, previous) || isSame(date, baseDate);\n}\n\nexport const Grids = ({\n baseDate,\n selectedStartDate,\n selectedEndDate,\n\n focusedDate,\n onFocusedDateChange,\n\n isDateEnabled,\n dateDisabledReason,\n isSingleGrid,\n\n onSelectDate,\n onPageChange,\n\n locale,\n todayAriaLabel,\n currentMonthAriaLabel,\n headingIdPrefix,\n startOfWeek = 0,\n granularity = 'day',\n}: SelectGridProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [gridHasFocus, setGridHasFocus] = useState(false);\n const isMonthPicker = granularity === 'month';\n\n const focusedDateRef = useRef<HTMLTableCellElement>(null);\n\n const addPages = !isMonthPicker ? addMonths : addYears;\n const getBase = !isMonthPicker ? getBaseDay : getBaseMonth;\n const moveDown = isMonthPicker ? moveMonthDown : moveNextWeek;\n const moveLeft = isMonthPicker ? movePrevMonth : movePrevDay;\n const moveRight = isMonthPicker ? moveNextMonth : moveNextDay;\n const moveUp = isMonthPicker ? moveMonthUp : movePrevWeek;\n\n const dateCache = useDateCache();\n baseDate = dateCache(baseDate);\n focusedDate = focusedDate ? dateCache(focusedDate) : null;\n\n const isDateFocusable = useCallback(\n (date: Date) => {\n return isDateEnabled(date) || (!isDateEnabled(date) && !!dateDisabledReason(date));\n },\n [isDateEnabled, dateDisabledReason]\n );\n\n useEffect(() => {\n if (focusedDate && !isVisible(focusedDate, baseDate, isSingleGrid, granularity)) {\n const direction = isAfter(focusedDate, baseDate) ? -1 : 1;\n\n const newPage = !isSingleGrid && direction === -1 ? addPages(baseDate, -1) : baseDate;\n const nearestBaseDate = getBase(newPage, isDateFocusable);\n\n const newFocusedDate = findDateToFocus(focusedDate, nearestBaseDate, isDateFocusable);\n\n onFocusedDateChange(newFocusedDate);\n }\n }, [baseDate, focusedDate, isSingleGrid, granularity, addPages, isDateFocusable, onFocusedDateChange, getBase]);\n\n const onGridKeyDownHandler = (event: React.KeyboardEvent<HTMLElement>) => {\n let updatedFocusDate: Date | null = null;\n\n const keys = [KeyCode.up, KeyCode.down, KeyCode.left, KeyCode.right, KeyCode.space, KeyCode.enter];\n\n if (focusedDate === null || keys.indexOf(event.keyCode) === -1) {\n return;\n }\n\n event.preventDefault();\n\n handleKey(event, {\n onActivate: () => {\n if (!focusedDate || !isDateEnabled(focusedDate)) {\n return;\n }\n onSelectDate(focusedDate);\n },\n onBlockEnd: () => focusedDate && (updatedFocusDate = moveDown(focusedDate, isDateFocusable)),\n onBlockStart: () => focusedDate && (updatedFocusDate = moveUp(focusedDate, isDateFocusable)),\n onInlineStart: () => focusedDate && (updatedFocusDate = moveLeft(focusedDate, isDateFocusable)),\n onInlineEnd: () => focusedDate && (updatedFocusDate = moveRight(focusedDate, isDateFocusable)),\n });\n\n if (!updatedFocusDate) {\n return;\n }\n\n const updatedDateIsVisible = isVisible(updatedFocusDate, baseDate, isSingleGrid, granularity);\n\n if (!updatedDateIsVisible) {\n const newPageIsOnLeftSide = !isSingleGrid && isBefore(updatedFocusDate, baseDate);\n onPageChange(newPageIsOnLeftSide ? addPages(updatedFocusDate, 1) : updatedFocusDate);\n }\n onFocusedDateChange(updatedFocusDate);\n };\n\n useEffect(() => {\n // focus current date if the focus is already inside the calendar\n if (focusedDate !== null && gridHasFocus) {\n if (focusedDateRef.current && focusedDateRef.current !== document.activeElement) {\n focusedDateRef.current.focus();\n }\n }\n }, [focusedDate, gridHasFocus]);\n\n const onGridBlur = (event: React.FocusEvent) => {\n const newFocusTarget = event.relatedTarget || document.activeElement;\n const newFocusTargetIsInGrid = containerRef.current?.contains(newFocusTarget as Node);\n if (newFocusTarget && !newFocusTargetIsInGrid && gridHasFocus) {\n setGridHasFocus(false);\n }\n };\n\n const onGridFocus = () => {\n if (!gridHasFocus) {\n setGridHasFocus(true);\n }\n };\n\n const isRangeVisible = (selectedStartDate && selectedEndDate) || gridHasFocus;\n\n const rangeEnds: Date[] = [selectedStartDate ?? focusedDate, selectedEndDate ?? focusedDate].filter(hasValue);\n const rangeStartDate = min(rangeEnds);\n const rangeEndDate = max(rangeEnds);\n const pageUnit = isMonthPicker ? 'year' : 'month';\n\n const sharedGridProps = {\n selectedEndDate,\n selectedStartDate,\n focusedDate,\n focusedDateRef,\n rangeStartDate: isRangeVisible ? rangeStartDate : null,\n rangeEndDate: isRangeVisible ? rangeEndDate : null,\n isDateEnabled,\n dateDisabledReason,\n onSelectDate,\n onGridKeyDownHandler,\n onFocusedDateChange,\n locale,\n granularity,\n currentMonthAriaLabel,\n startOfWeek,\n todayAriaLabel,\n };\n\n return (\n <div ref={containerRef} onFocus={onGridFocus} onBlur={onGridBlur}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n {!isSingleGrid && (\n <Grid\n {...sharedGridProps}\n padDates={'before'}\n className={testutilStyles['first-grid']}\n baseDate={addPages(baseDate, -1)}\n ariaLabelledby={`${headingIdPrefix}-prev${pageUnit}`}\n />\n )}\n <Grid\n {...sharedGridProps}\n padDates={'after'}\n className={testutilStyles['second-grid']}\n baseDate={baseDate}\n ariaLabelledby={`${headingIdPrefix}-current${pageUnit}`}\n />\n </InternalSpaceBetween>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { addMonths, addYears, isAfter, isBefore, isSameMonth, isSameYear, max, min } from 'date-fns';\n\nimport { CalendarProps } from '../../../calendar/interfaces';\nimport {\n getBaseDay,\n moveNextDay,\n moveNextWeek,\n movePrevDay,\n movePrevWeek,\n} from '../../../calendar/utils/navigation-day';\nimport {\n getBaseMonth,\n moveMonthDown,\n moveMonthUp,\n moveNextMonth,\n movePrevMonth,\n} from '../../../calendar/utils/navigation-month';\nimport { useDateCache } from '../../../internal/hooks/use-date-cache';\nimport { KeyCode } from '../../../internal/keycode';\nimport handleKey from '../../../internal/utils/handle-key';\nimport { hasValue } from '../../../internal/utils/has-value';\nimport InternalSpaceBetween from '../../../space-between/internal';\nimport { findDateToFocus } from '../utils';\nimport { Grid } from './grid';\nimport { SelectGridProps } from './interfaces';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\n\nfunction isVisible(date: Date, baseDate: Date, isSingleGrid: boolean, granularity: CalendarProps.Granularity) {\n const isSame = granularity === 'day' ? isSameMonth : isSameYear;\n const add = granularity === 'day' ? addMonths : addYears;\n if (isSingleGrid) {\n return isSame(date, baseDate);\n }\n\n const previous = add(baseDate, -1);\n\n return isSame(date, previous) || isSame(date, baseDate);\n}\n\nexport const Grids = ({\n baseDate,\n selectedStartDate,\n selectedEndDate,\n\n focusedDate,\n onFocusedDateChange,\n\n isDateEnabled,\n dateDisabledReason,\n isSingleGrid,\n\n onSelectDate,\n onPageChange,\n\n locale,\n todayAriaLabel,\n currentMonthAriaLabel,\n headingIdPrefix,\n startOfWeek = 0,\n granularity = 'day',\n}: SelectGridProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [gridHasFocus, setGridHasFocus] = useState(false);\n const isMonthPicker = granularity === 'month';\n\n const focusedDateRef = useRef<HTMLTableCellElement>(null);\n\n const addPages = !isMonthPicker ? addMonths : addYears;\n const getBase = !isMonthPicker ? getBaseDay : getBaseMonth;\n const moveDown = isMonthPicker ? moveMonthDown : moveNextWeek;\n const moveLeft = isMonthPicker ? movePrevMonth : movePrevDay;\n const moveRight = isMonthPicker ? moveNextMonth : moveNextDay;\n const moveUp = isMonthPicker ? moveMonthUp : movePrevWeek;\n\n const dateCache = useDateCache();\n baseDate = dateCache(baseDate);\n focusedDate = focusedDate ? dateCache(focusedDate) : null;\n\n const isDateFocusable = useCallback(\n (date: Date) => {\n return isDateEnabled(date) || (!isDateEnabled(date) && !!dateDisabledReason(date));\n },\n [isDateEnabled, dateDisabledReason]\n );\n\n useEffect(() => {\n if (focusedDate && !isVisible(focusedDate, baseDate, isSingleGrid, granularity)) {\n const direction = isAfter(focusedDate, baseDate) ? -1 : 1;\n\n const newPage = !isSingleGrid && direction === -1 ? addPages(baseDate, -1) : baseDate;\n const nearestBaseDate = getBase(newPage, isDateFocusable);\n\n const newFocusedDate = findDateToFocus(focusedDate, nearestBaseDate, isDateFocusable);\n\n onFocusedDateChange(newFocusedDate);\n }\n }, [baseDate, focusedDate, isSingleGrid, granularity, addPages, isDateFocusable, onFocusedDateChange, getBase]);\n\n const onGridKeyDownHandler = (event: React.KeyboardEvent<HTMLElement>) => {\n let updatedFocusDate: Date | null = null;\n\n const keys = [KeyCode.up, KeyCode.down, KeyCode.left, KeyCode.right, KeyCode.space, KeyCode.enter];\n\n if (focusedDate === null || keys.indexOf(event.keyCode) === -1) {\n return;\n }\n\n event.preventDefault();\n\n handleKey(event, {\n onActivate: () => {\n if (!focusedDate || !isDateEnabled(focusedDate)) {\n return;\n }\n onSelectDate(focusedDate);\n },\n onBlockEnd: () => focusedDate && (updatedFocusDate = moveDown(focusedDate, isDateFocusable)),\n onBlockStart: () => focusedDate && (updatedFocusDate = moveUp(focusedDate, isDateFocusable)),\n onInlineStart: () => focusedDate && (updatedFocusDate = moveLeft(focusedDate, isDateFocusable)),\n onInlineEnd: () => focusedDate && (updatedFocusDate = moveRight(focusedDate, isDateFocusable)),\n });\n\n if (!updatedFocusDate) {\n return;\n }\n\n const updatedDateIsVisible = isVisible(updatedFocusDate, baseDate, isSingleGrid, granularity);\n\n if (!updatedDateIsVisible) {\n const newPageIsOnLeftSide = !isSingleGrid && isBefore(updatedFocusDate, baseDate);\n onPageChange(newPageIsOnLeftSide ? addPages(updatedFocusDate, 1) : updatedFocusDate);\n }\n onFocusedDateChange(updatedFocusDate);\n };\n\n useEffect(() => {\n // focus current date if the focus is already inside the calendar\n if (focusedDate !== null && gridHasFocus) {\n if (focusedDateRef.current && focusedDateRef.current !== document.activeElement) {\n focusedDateRef.current.focus();\n }\n }\n }, [focusedDate, gridHasFocus]);\n\n const onGridBlur = (event: React.FocusEvent) => {\n const newFocusTarget = event.relatedTarget || document.activeElement;\n const newFocusTargetIsInGrid = containerRef.current?.contains(newFocusTarget as Node);\n if (newFocusTarget && !newFocusTargetIsInGrid && gridHasFocus) {\n setGridHasFocus(false);\n }\n };\n\n const onGridFocus = () => {\n if (!gridHasFocus) {\n setGridHasFocus(true);\n }\n };\n\n const isRangeVisible = (selectedStartDate && selectedEndDate) || gridHasFocus;\n\n const rangeEnds: Date[] = [selectedStartDate ?? focusedDate, selectedEndDate ?? focusedDate].filter(hasValue);\n const rangeStartDate = min(rangeEnds);\n const rangeEndDate = max(rangeEnds);\n const pageUnit = isMonthPicker ? 'year' : 'month';\n\n const sharedGridProps = {\n selectedEndDate,\n selectedStartDate,\n focusedDate,\n focusedDateRef,\n rangeStartDate: isRangeVisible ? rangeStartDate : null,\n rangeEndDate: isRangeVisible ? rangeEndDate : null,\n isDateEnabled,\n dateDisabledReason,\n onSelectDate,\n onGridKeyDownHandler,\n onFocusedDateChange,\n locale,\n granularity,\n currentMonthAriaLabel,\n startOfWeek,\n todayAriaLabel,\n };\n\n return (\n <div ref={containerRef} onFocus={onGridFocus} onBlur={onGridBlur}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n {!isSingleGrid && (\n <Grid\n {...sharedGridProps}\n padDates={'before'}\n className={testutilStyles['first-grid']}\n baseDate={addPages(baseDate, -1)}\n ariaLabelledby={`${headingIdPrefix}-prev${pageUnit}`}\n />\n )}\n <Grid\n {...sharedGridProps}\n padDates={'after'}\n className={testutilStyles['second-grid']}\n baseDate={baseDate}\n ariaLabelledby={`${headingIdPrefix}-current${pageUnit}`}\n />\n </InternalSpaceBetween>\n </div>\n );\n};\n"]}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { CalendarProps } from '../../../calendar/interfaces';
2
3
  import { DateRangePickerProps, DayIndex } from '../../interfaces';
3
4
  export interface GridBaseProps {
4
5
  baseDate: Date;
@@ -11,7 +12,7 @@ export interface GridBaseProps {
11
12
  dateDisabledReason: DateRangePickerProps.DateDisabledReasonFunction;
12
13
  locale: string;
13
14
  }
14
- export interface GridProps extends GridBaseProps {
15
+ export interface GridProps extends GridBaseProps, Required<Pick<CalendarProps, 'granularity'>> {
15
16
  rangeStartDate: Date | null;
16
17
  rangeEndDate: Date | null;
17
18
  focusedDateRef: React.RefObject<HTMLTableCellElement>;
@@ -25,9 +26,8 @@ export interface GridProps extends GridBaseProps {
25
26
  currentMonthAriaLabel?: string;
26
27
  startOfWeek?: DayIndex;
27
28
  todayAriaLabel?: string;
28
- granularity: DateRangePickerProps.Granularity;
29
29
  }
30
- export interface SelectGridProps extends GridBaseProps {
30
+ export interface SelectGridProps extends GridBaseProps, Pick<CalendarProps, 'granularity'> {
31
31
  /**
32
32
  * changes the page/view of the calendar. Doing so will change to another month or year
33
33
  * @param date
@@ -40,7 +40,6 @@ export interface SelectGridProps extends GridBaseProps {
40
40
  * not needed for grids with a month granularity
41
41
  */
42
42
  startOfWeek?: DayIndex;
43
- granularity?: DateRangePickerProps.Granularity;
44
43
  todayAriaLabel?: string;
45
44
  currentMonthAriaLabel?: string;
46
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/interfaces.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IAEzB,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC1D,kBAAkB,EAAE,oBAAoB,CAAC,0BAA0B,CAAC;IAEpE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAEtD,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEpE,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAC/C;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD;;;;OAIG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEnC,YAAY,EAAE,OAAO,CAAC;IAEtB,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/interfaces.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IAEzB,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC1D,kBAAkB,EAAE,oBAAoB,CAAC,0BAA0B,CAAC;IAEpE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC5F,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAEtD,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEpE,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IACxF;;;;OAIG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEnC,YAAY,EAAE,OAAO,CAAC;IAEtB,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DateRangePickerProps, DayIndex } from '../../interfaces';\n\nexport interface GridBaseProps {\n baseDate: Date;\n selectedStartDate: Date | null;\n selectedEndDate: Date | null;\n focusedDate: Date | null;\n\n onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;\n onSelectDate: (date: Date) => void;\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n dateDisabledReason: DateRangePickerProps.DateDisabledReasonFunction;\n\n locale: string;\n}\n\nexport interface GridProps extends GridBaseProps {\n rangeStartDate: Date | null;\n rangeEndDate: Date | null;\n focusedDateRef: React.RefObject<HTMLTableCellElement>;\n\n onGridKeyDownHandler: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n ariaLabelledby: string;\n className?: string;\n\n /**\n * Used to only add the dates of previous and next months outside the month pages\n */\n padDates: 'before' | 'after';\n currentMonthAriaLabel?: string;\n startOfWeek?: DayIndex;\n todayAriaLabel?: string;\n granularity: DateRangePickerProps.Granularity;\n}\n\nexport interface SelectGridProps extends GridBaseProps {\n /**\n * changes the page/view of the calendar. Doing so will change to another month or year\n * @param date\n * @returns\n */\n onPageChange: (date: Date) => void;\n\n isSingleGrid: boolean;\n\n headingIdPrefix: string;\n /**\n * not needed for grids with a month granularity\n */\n startOfWeek?: DayIndex;\n granularity?: DateRangePickerProps.Granularity;\n todayAriaLabel?: string;\n currentMonthAriaLabel?: string;\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CalendarProps } from '../../../calendar/interfaces';\nimport { DateRangePickerProps, DayIndex } from '../../interfaces';\n\nexport interface GridBaseProps {\n baseDate: Date;\n selectedStartDate: Date | null;\n selectedEndDate: Date | null;\n focusedDate: Date | null;\n\n onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;\n onSelectDate: (date: Date) => void;\n isDateEnabled: DateRangePickerProps.IsDateEnabledFunction;\n dateDisabledReason: DateRangePickerProps.DateDisabledReasonFunction;\n\n locale: string;\n}\n\nexport interface GridProps extends GridBaseProps, Required<Pick<CalendarProps, 'granularity'>> {\n rangeStartDate: Date | null;\n rangeEndDate: Date | null;\n focusedDateRef: React.RefObject<HTMLTableCellElement>;\n\n onGridKeyDownHandler: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n ariaLabelledby: string;\n className?: string;\n\n /**\n * Used to only add the dates of previous and next months outside the month pages\n */\n padDates: 'before' | 'after';\n currentMonthAriaLabel?: string;\n startOfWeek?: DayIndex;\n todayAriaLabel?: string;\n}\n\nexport interface SelectGridProps extends GridBaseProps, Pick<CalendarProps, 'granularity'> {\n /**\n * changes the page/view of the calendar. Doing so will change to another month or year\n * @param date\n * @returns\n */\n onPageChange: (date: Date) => void;\n\n isSingleGrid: boolean;\n\n headingIdPrefix: string;\n /**\n * not needed for grids with a month granularity\n */\n startOfWeek?: DayIndex;\n todayAriaLabel?: string;\n currentMonthAriaLabel?: string;\n}\n"]}
@@ -1,9 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { DateRangePickerProps } from '../../interfaces';
3
2
  interface HeaderButtonProps {
4
3
  ariaLabel?: string;
5
4
  onChangePage: (n: number) => void;
6
- granularity?: DateRangePickerProps.Granularity;
7
5
  }
8
6
  export declare function PrevPageButton({ ariaLabel, onChangePage }: HeaderButtonProps): JSX.Element;
9
7
  export declare function NextPageButton({ ariaLabel, onChangePage }: HeaderButtonProps): JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"header-button.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/header-button.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAChD;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,iBAAiB,eAW5E;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,iBAAiB,eAW5E"}
1
+ {"version":3,"file":"header-button.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/header-button.tsx"],"names":[],"mappings":";AASA,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,iBAAiB,eAW5E;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,iBAAiB,eAW5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"header-button.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/header-button.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAQ9D,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAqB;IAC3E,OAAO,CACL,oBAAC,cAAc,IACb,QAAQ,EAAC,YAAY,EACrB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC/B,UAAU,EAAC,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC,GACpG,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAqB;IAC3E,OAAO,CACL,oBAAC,cAAc,IACb,QAAQ,EAAC,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAC9B,UAAU,EAAC,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC,GACpG,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { InternalButton } from '../../../button/internal';\nimport { DateRangePickerProps } from '../../interfaces';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\n\ninterface HeaderButtonProps {\n ariaLabel?: string;\n onChangePage: (n: number) => void;\n granularity?: DateRangePickerProps.Granularity;\n}\n\nexport function PrevPageButton({ ariaLabel, onChangePage }: HeaderButtonProps) {\n return (\n <InternalButton\n iconName=\"angle-left\"\n ariaLabel={ariaLabel}\n variant={'icon'}\n onClick={() => onChangePage(-1)}\n formAction=\"none\"\n className={clsx(testutilStyles[`calendar-prev-page-btn`], testutilStyles[`calendar-prev-month-btn`])}\n />\n );\n}\n\nexport function NextPageButton({ ariaLabel, onChangePage }: HeaderButtonProps) {\n return (\n <InternalButton\n iconName=\"angle-right\"\n ariaLabel={ariaLabel}\n variant={'icon'}\n onClick={() => onChangePage(1)}\n formAction=\"none\"\n className={clsx(testutilStyles[`calendar-next-page-btn`], testutilStyles[`calendar-next-month-btn`])}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"header-button.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/header-button.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAO9D,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAqB;IAC3E,OAAO,CACL,oBAAC,cAAc,IACb,QAAQ,EAAC,YAAY,EACrB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC/B,UAAU,EAAC,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC,GACpG,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,YAAY,EAAqB;IAC3E,OAAO,CACL,oBAAC,cAAc,IACb,QAAQ,EAAC,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAC9B,UAAU,EAAC,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC,GACpG,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { InternalButton } from '../../../button/internal';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\n\ninterface HeaderButtonProps {\n ariaLabel?: string;\n onChangePage: (n: number) => void;\n}\n\nexport function PrevPageButton({ ariaLabel, onChangePage }: HeaderButtonProps) {\n return (\n <InternalButton\n iconName=\"angle-left\"\n ariaLabel={ariaLabel}\n variant={'icon'}\n onClick={() => onChangePage(-1)}\n formAction=\"none\"\n className={clsx(testutilStyles[`calendar-prev-page-btn`], testutilStyles[`calendar-prev-month-btn`])}\n />\n );\n}\n\nexport function NextPageButton({ ariaLabel, onChangePage }: HeaderButtonProps) {\n return (\n <InternalButton\n iconName=\"angle-right\"\n ariaLabel={ariaLabel}\n variant={'icon'}\n onClick={() => onChangePage(1)}\n formAction=\"none\"\n className={clsx(testutilStyles[`calendar-next-page-btn`], testutilStyles[`calendar-next-month-btn`])}\n />\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { DateRangePickerProps } from '../../interfaces';
3
- interface CalendarHeaderProps {
2
+ import { CalendarProps } from '../../../calendar/interfaces';
3
+ interface CalendarHeaderProps extends Pick<CalendarProps, 'granularity'> {
4
4
  baseDate: Date;
5
5
  locale: string;
6
6
  onChangePage: (n: number) => void;
@@ -8,7 +8,6 @@ interface CalendarHeaderProps {
8
8
  nextPageLabel?: string;
9
9
  isSingleGrid: boolean;
10
10
  headingIdPrefix: string;
11
- granularity?: DateRangePickerProps.Granularity;
12
11
  }
13
12
  export default function CalendarHeader({ baseDate, locale, onChangePage, previousPageLabel, nextPageLabel, isSingleGrid, headingIdPrefix, granularity, }: CalendarHeaderProps): JSX.Element;
14
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/index.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAChD;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAmB,GACpB,EAAE,mBAAmB,eA4CrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAS7D,UAAU,mBAAoB,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IACtE,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAmB,GACpB,EAAE,mBAAmB,eA4CrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAa9D,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAW,GAAG,KAAK,GACC;IACpB,MAAM,IAAI,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,WAAW,KAAK,OAAO,CAAC;IAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACpE,MAAM,mBAAmB,GAAG,WAAW,CACrC,MAAM,EACN,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CACxE,CAAC;IACF,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAElD,OAAO,CACL;QACE,6BAAK,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAChF,oBAAC,cAAc,IACb,SAAS,EAAE,IAAI,CACb,aAAa,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,oCAAoC,EAC1F,iBAAiB,CAClB,EACD,YAAY,EAAE,YAAY,GAC1B;YACF,4BAAI,SAAS,EAAE,MAAM,CAAC,+BAA+B,CAAC;gBACnD,CAAC,YAAY,IAAI,CAChB,8BAAM,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,QAAQ,QAAQ,EAAE,IACtF,mBAAmB,CACf,CACR;gBACD,8BAAM,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,WAAW,QAAQ,EAAE,IACzF,sBAAsB,CAClB,CACJ;YACL,oBAAC,cAAc,IACb,SAAS,EAAE,IAAI,CACb,aAAa,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gCAAgC,EAClF,aAAa,CACd,EACD,YAAY,EAAE,YAAY,GAC1B,CACE;QACN,oBAAC,kBAAkB,IAAC,MAAM,EAAE,IAAI,IAC7B,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,mBAAmB,KAAK,sBAAsB,EAAE,CACzE,CACpB,CACJ,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { add } from 'date-fns';\n\nimport { renderMonthAndYear, renderYear } from '../../../calendar/utils/intl';\nimport { useInternalI18n } from '../../../i18n/context.js';\nimport InternalLiveRegion from '../../../live-region/internal';\nimport { DateRangePickerProps } from '../../interfaces';\nimport { NextPageButton, PrevPageButton } from './header-button';\n\nimport styles from '../../styles.css.js';\nimport testutilStyles from '../../test-classes/styles.css.js';\n\ninterface CalendarHeaderProps {\n baseDate: Date;\n locale: string;\n onChangePage: (n: number) => void;\n previousPageLabel?: string;\n nextPageLabel?: string;\n isSingleGrid: boolean;\n headingIdPrefix: string;\n granularity?: DateRangePickerProps.Granularity;\n}\n\nexport default function CalendarHeader({\n baseDate,\n locale,\n onChangePage,\n previousPageLabel,\n nextPageLabel,\n isSingleGrid,\n headingIdPrefix,\n granularity = 'day',\n}: CalendarHeaderProps) {\n const i18n = useInternalI18n('date-range-picker');\n const isMonthPicker = granularity === 'month';\n const renderLabel = isMonthPicker ? renderYear : renderMonthAndYear;\n const prevPageHeaderLabel = renderLabel(\n locale,\n add(baseDate, granularity === 'month' ? { years: -1 } : { months: -1 })\n );\n const currentPageHeaderLabel = renderLabel(locale, baseDate);\n const pageUnit = isMonthPicker ? 'year' : 'month';\n\n return (\n <>\n <div className={clsx(testutilStyles['calendar-header'], styles['calendar-header'])}>\n <PrevPageButton\n ariaLabel={i18n(\n isMonthPicker ? 'i18nStrings.previousYearAriaLabel' : 'i18nStrings.previousMonthAriaLabel',\n previousPageLabel\n )}\n onChangePage={onChangePage}\n />\n <h2 className={styles['calendar-header-pages-wrapper']}>\n {!isSingleGrid && (\n <span className={styles['calendar-header-page']} id={`${headingIdPrefix}-prev${pageUnit}`}>\n {prevPageHeaderLabel}\n </span>\n )}\n <span className={styles['calendar-header-page']} id={`${headingIdPrefix}-current${pageUnit}`}>\n {currentPageHeaderLabel}\n </span>\n </h2>\n <NextPageButton\n ariaLabel={i18n(\n isMonthPicker ? 'i18nStrings.nextYearAriaLabel' : 'i18nStrings.nextMonthAriaLabel',\n nextPageLabel\n )}\n onChangePage={onChangePage}\n />\n </div>\n <InternalLiveRegion hidden={true}>\n {isSingleGrid ? currentPageHeaderLabel : `${prevPageHeaderLabel}, ${currentPageHeaderLabel}`}\n </InternalLiveRegion>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/header/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAY9D,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAW,GAAG,KAAK,GACC;IACpB,MAAM,IAAI,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,WAAW,KAAK,OAAO,CAAC;IAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACpE,MAAM,mBAAmB,GAAG,WAAW,CACrC,MAAM,EACN,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CACxE,CAAC;IACF,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAElD,OAAO,CACL;QACE,6BAAK,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAChF,oBAAC,cAAc,IACb,SAAS,EAAE,IAAI,CACb,aAAa,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,oCAAoC,EAC1F,iBAAiB,CAClB,EACD,YAAY,EAAE,YAAY,GAC1B;YACF,4BAAI,SAAS,EAAE,MAAM,CAAC,+BAA+B,CAAC;gBACnD,CAAC,YAAY,IAAI,CAChB,8BAAM,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,QAAQ,QAAQ,EAAE,IACtF,mBAAmB,CACf,CACR;gBACD,8BAAM,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,WAAW,QAAQ,EAAE,IACzF,sBAAsB,CAClB,CACJ;YACL,oBAAC,cAAc,IACb,SAAS,EAAE,IAAI,CACb,aAAa,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gCAAgC,EAClF,aAAa,CACd,EACD,YAAY,EAAE,YAAY,GAC1B,CACE;QACN,oBAAC,kBAAkB,IAAC,MAAM,EAAE,IAAI,IAC7B,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,mBAAmB,KAAK,sBAAsB,EAAE,CACzE,CACpB,CACJ,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { add } from 'date-fns';\n\nimport { CalendarProps } from '../../../calendar/interfaces';\nimport { renderMonthAndYear, renderYear } from '../../../calendar/utils/intl';\nimport { useInternalI18n } from '../../../i18n/context.js';\nimport InternalLiveRegion from '../../../live-region/internal';\nimport { NextPageButton, PrevPageButton } from './header-button';\n\nimport styles from '../../styles.css.js';\nimport testutilStyles from '../../test-classes/styles.css.js';\n\ninterface CalendarHeaderProps extends Pick<CalendarProps, 'granularity'> {\n baseDate: Date;\n locale: string;\n onChangePage: (n: number) => void;\n previousPageLabel?: string;\n nextPageLabel?: string;\n isSingleGrid: boolean;\n headingIdPrefix: string;\n}\n\nexport default function CalendarHeader({\n baseDate,\n locale,\n onChangePage,\n previousPageLabel,\n nextPageLabel,\n isSingleGrid,\n headingIdPrefix,\n granularity = 'day',\n}: CalendarHeaderProps) {\n const i18n = useInternalI18n('date-range-picker');\n const isMonthPicker = granularity === 'month';\n const renderLabel = isMonthPicker ? renderYear : renderMonthAndYear;\n const prevPageHeaderLabel = renderLabel(\n locale,\n add(baseDate, granularity === 'month' ? { years: -1 } : { months: -1 })\n );\n const currentPageHeaderLabel = renderLabel(locale, baseDate);\n const pageUnit = isMonthPicker ? 'year' : 'month';\n\n return (\n <>\n <div className={clsx(testutilStyles['calendar-header'], styles['calendar-header'])}>\n <PrevPageButton\n ariaLabel={i18n(\n isMonthPicker ? 'i18nStrings.previousYearAriaLabel' : 'i18nStrings.previousMonthAriaLabel',\n previousPageLabel\n )}\n onChangePage={onChangePage}\n />\n <h2 className={styles['calendar-header-pages-wrapper']}>\n {!isSingleGrid && (\n <span className={styles['calendar-header-page']} id={`${headingIdPrefix}-prev${pageUnit}`}>\n {prevPageHeaderLabel}\n </span>\n )}\n <span className={styles['calendar-header-page']} id={`${headingIdPrefix}-current${pageUnit}`}>\n {currentPageHeaderLabel}\n </span>\n </h2>\n <NextPageButton\n ariaLabel={i18n(\n isMonthPicker ? 'i18nStrings.nextYearAriaLabel' : 'i18nStrings.nextMonthAriaLabel',\n nextPageLabel\n )}\n onChangePage={onChangePage}\n />\n </div>\n <InternalLiveRegion hidden={true}>\n {isSingleGrid ? currentPageHeaderLabel : `${prevPageHeaderLabel}, ${currentPageHeaderLabel}`}\n </InternalLiveRegion>\n </>\n );\n}\n"]}
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
+ import { CalendarProps } from '../../calendar/interfaces';
2
3
  import { BaseComponentProps } from '../../internal/base-component';
3
4
  import { TimeInputProps } from '../../time-input/interfaces';
4
5
  import { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';
5
- export interface DateRangePickerCalendarProps extends BaseComponentProps {
6
+ export interface DateRangePickerCalendarProps extends BaseComponentProps, Pick<CalendarProps, 'granularity'> {
6
7
  value: DateRangePickerProps.PendingAbsoluteValue;
7
8
  setValue: React.Dispatch<React.SetStateAction<DateRangePickerProps.PendingAbsoluteValue>>;
8
9
  locale?: string;
@@ -13,7 +14,6 @@ export interface DateRangePickerCalendarProps extends BaseComponentProps {
13
14
  dateOnly?: boolean;
14
15
  timeInputFormat?: TimeInputProps.Format;
15
16
  customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;
16
- granularity?: DateRangePickerProps.Granularity;
17
17
  }
18
18
  export default function DateRangePickerCalendar({ value, setValue, locale, startOfWeek, isDateEnabled, dateDisabledReason, i18nStrings, dateOnly, timeInputFormat, customAbsoluteRangeControl, granularity, }: DateRangePickerCalendarProps): JSX.Element;
19
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAmBxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAS/E,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,CAAC;IACjD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACxC,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAClF,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAChD;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,KAAK,EACL,QAAQ,EACR,MAAW,EACX,WAAW,EACX,aAA0B,EAC1B,kBAA6B,EAC7B,WAAW,EACX,QAAgB,EAChB,eAA4B,EAC5B,0BAA0B,EAC1B,WAAmB,GACpB,EAAE,4BAA4B,eAyP9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAexC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAS/E,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IAC1G,KAAK,EAAE,oBAAoB,CAAC,oBAAoB,CAAC;IACjD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACxC,0BAA0B,EAAE,oBAAoB,CAAC,oBAAoB,GAAG,SAAS,CAAC;CACnF;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,KAAK,EACL,QAAQ,EACR,MAAW,EACX,WAAW,EACX,aAA0B,EAC1B,kBAA6B,EAC7B,WAAW,EACX,QAAgB,EAChB,eAA4B,EAC5B,0BAA0B,EAC1B,WAAmB,GACpB,EAAE,4BAA4B,eAyP9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addMonths,\n addYears,\n endOfDay,\n isAfter,\n isBefore,\n isSameMonth,\n isSameYear,\n startOfDay,\n startOfMonth,\n startOfYear,\n} from 'date-fns';\n\nimport { getDateLabel, renderTimeLabel } from '../../calendar/utils/intl';\nimport { getBaseDay } from '../../calendar/utils/navigation-day';\nimport { getBaseMonth } from '../../calendar/utils/navigation-month';\nimport { useInternalI18n } from '../../i18n/context.js';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { useMobile } from '../../internal/hooks/use-mobile/index.js';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { formatDate, formatDateTime, parseDate, splitDateTime } from '../../internal/utils/date-time';\nimport { normalizeLocale, normalizeStartOfWeek } from '../../internal/utils/locale';\nimport InternalLiveRegion from '../../live-region/internal';\nimport SpaceBetween from '../../space-between/internal';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';\nimport { Grids } from './grids';\nimport CalendarHeader from './header';\nimport RangeInputs from './range-inputs.js';\nimport { findDateToFocus, findMonthToDisplay, findMonthToFocus, findYearToDisplay } from './utils';\n\nimport styles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport interface DateRangePickerCalendarProps extends BaseComponentProps {\n value: DateRangePickerProps.PendingAbsoluteValue;\n setValue: React.Dispatch<React.SetStateAction<DateRangePickerProps.PendingAbsoluteValue>>;\n locale?: string;\n startOfWeek?: number;\n isDateEnabled?: (date: Date) => boolean;\n dateDisabledReason?: (date: Date) => string;\n i18nStrings?: RangeCalendarI18nStrings;\n dateOnly?: boolean;\n timeInputFormat?: TimeInputProps.Format;\n customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;\n granularity?: DateRangePickerProps.Granularity;\n}\n\nexport default function DateRangePickerCalendar({\n value,\n setValue,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n dateDisabledReason = () => '',\n i18nStrings,\n dateOnly = false,\n timeInputFormat = 'hh:mm:ss',\n customAbsoluteRangeControl,\n granularity = 'day',\n}: DateRangePickerCalendarProps) {\n const isSingleGrid = useMobile();\n const isMonthPicker = granularity === 'month';\n const hideTime = isMonthPicker || dateOnly;\n const normalizedLocale = normalizeLocale('DateRangePicker', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n const i18n = useInternalI18n('date-range-picker');\n\n const [announcement, setAnnouncement] = useState('');\n const findPageToDisplay = isMonthPicker ? findYearToDisplay : findMonthToDisplay;\n const isSamePage = isMonthPicker ? isSameYear : isSameMonth;\n const addPage = isMonthPicker ? addYears : addMonths;\n const startOfPage = isMonthPicker ? startOfYear : startOfMonth;\n const findItemToFocus = isMonthPicker ? findMonthToFocus : findDateToFocus;\n const [currentPage, setCurrentPage] = useState(() => findPageToDisplay(value, isSingleGrid));\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSamePage(startDate, currentPage)) {\n return startDate;\n }\n if (!isSingleGrid && isSamePage(startDate, addPage(currentPage, -1))) {\n return startDate;\n }\n }\n return findItemToFocus(parseDate(value.start.date), currentPage, isDateEnabled);\n });\n\n const updateCurrentPage = (startDate: string) => {\n if ((isMonthPicker && startDate.length >= 4) || startDate.length >= 8) {\n const newCurrentPage = startOfPage(parseDate(startDate));\n setCurrentPage(isSingleGrid ? newCurrentPage : addPage(newCurrentPage, 1));\n }\n };\n\n // recommended to include the start/end time announced with the selection\n // because the user is not aware of the fact that a start/end time is also set as soon as they select a date\n const announceStart = (startDate: Date) => {\n return `${i18n('i18nStrings.startDateLabel', i18nStrings?.startDateLabel)}, ${getDateLabel(normalizedLocale, startDate)}${\n hideTime\n ? ''\n : `, ${i18n('i18nStrings.startTimeLabel', i18nStrings?.startTimeLabel)}, ${renderTimeLabel(\n normalizedLocale,\n startDate,\n timeInputFormat\n )}`\n }. `;\n };\n\n const announceEnd = (endDate: Date) => {\n return `${i18n('i18nStrings.endDateLabel', i18nStrings?.endDateLabel)}, ${getDateLabel(normalizedLocale, endDate)}${\n hideTime\n ? ''\n : `, ${i18n('i18nStrings.endTimeLabel', i18nStrings?.endTimeLabel)}, ${renderTimeLabel(\n normalizedLocale,\n endDate,\n timeInputFormat\n )}`\n }. `;\n };\n\n const renderSelectedAbsoluteRangeAriaLive = i18n(\n 'i18nStrings.renderSelectedAbsoluteRangeAriaLive',\n i18nStrings?.renderSelectedAbsoluteRangeAriaLive,\n format => (startDate, endDate) => format({ startDate, endDate })\n );\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(normalizedLocale, startDate)} – ${getDateLabel(normalizedLocale, endDate)}`;\n }\n return renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(normalizedLocale, startDate),\n getDateLabel(normalizedLocale, endDate)\n );\n };\n\n const onSelectDateHandler = (selectedDate: Date) => {\n const { start, end } = value;\n let newStart: Date | undefined = undefined;\n let newEnd: Date | null | undefined = undefined;\n let announcement = '';\n\n // If both fields are empty, we set the start date\n if (!start.date && !end.date) {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart);\n }\n // If both fields are set, we start new\n else if (start.date && end.date) {\n newStart = startOfDay(selectedDate);\n newEnd = null;\n announcement = announceStart(newStart);\n }\n // If only the END date is empty, we fill it (and swap dates if needed)\n else if (start.date && !end.date) {\n const parsedStartDate = parseDate(start.date);\n\n if (isBefore(selectedDate, parsedStartDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(selectedDate);\n newEnd = endOfDay(parsedStartDate);\n announcement = announceStart(newStart) + announceRange(newStart, newEnd);\n } else {\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(parsedStartDate, newEnd);\n }\n }\n // If only the START date is empty, we fill it (and swap dates if needed)\n else if (!start.date && end.date) {\n const existingEndDate = parseDate(end.date);\n\n if (isAfter(selectedDate, existingEndDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(existingEndDate);\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(newStart, newEnd);\n } else {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart) + announceRange(newStart, existingEndDate);\n }\n }\n\n const formatValue = (\n date: Date | null | undefined,\n previous: DateRangePickerProps.DateTimeStrings,\n includeTime: boolean\n ): DateRangePickerProps.DateTimeStrings => {\n if (date === null) {\n // explicitly reset to empty\n return { date: '', time: '' };\n } else if (date === undefined) {\n // keep old value\n return previous;\n }\n if (!includeTime) {\n return {\n date: formatDate(date),\n time: '',\n };\n }\n return splitDateTime(formatDateTime(date));\n };\n\n setValue({\n start: formatValue(newStart, value.start, !hideTime),\n end: formatValue(newEnd, value.end, !hideTime),\n });\n setAnnouncement(announcement);\n };\n\n const onHeaderChangePageHandler = (amount: number) => {\n const addPageFn = isMonthPicker ? addYears : addMonths;\n const getBaseFn = isMonthPicker ? getBaseMonth : getBaseDay;\n const newBasePage = addPageFn(currentPage, amount);\n setCurrentPage(newBasePage);\n const newBaseDate = getBaseFn(newBasePage, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate = (value: string) => {\n setValue((oldValue: DateRangePickerProps.PendingAbsoluteValue) => ({\n ...oldValue,\n start: { ...oldValue.start, date: value },\n }));\n updateCurrentPage(value);\n };\n\n const interceptedSetValue: DateRangePickerCalendarProps['setValue'] = newValue => {\n setValue(oldValue => {\n const updated = typeof newValue === 'function' ? newValue(oldValue) : newValue;\n updateCurrentPage(updated.start.date);\n return updated;\n });\n };\n\n const headingIdPrefix = useUniqueId('date-range-picker-calendar-heading');\n\n return (\n <>\n <div\n className={clsx(styles['calendar-container'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <SpaceBetween size=\"s\">\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <CalendarHeader\n granularity={granularity}\n baseDate={currentPage}\n locale={normalizedLocale}\n onChangePage={onHeaderChangePageHandler}\n previousPageLabel={\n isMonthPicker ? i18nStrings?.previousYearAriaLabel : i18nStrings?.previousMonthAriaLabel\n }\n nextPageLabel={isMonthPicker ? i18nStrings?.nextYearAriaLabel : i18nStrings?.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n headingIdPrefix={headingIdPrefix}\n />\n\n <Grids\n granularity={granularity}\n isSingleGrid={isSingleGrid}\n locale={normalizedLocale}\n baseDate={currentPage}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDateEnabled={isDateEnabled}\n dateDisabledReason={dateDisabledReason}\n onSelectDate={onSelectDateHandler}\n onPageChange={setCurrentPage}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={i18nStrings?.todayAriaLabel}\n currentMonthAriaLabel={i18nStrings?.currentMonthAriaLabel}\n selectedStartDate={value?.start?.date ? parseDate(value.start.date, !isMonthPicker) : null}\n selectedEndDate={value?.end?.date ? parseDate(value.end.date, !isMonthPicker) : null}\n headingIdPrefix={headingIdPrefix}\n />\n </div>\n\n <RangeInputs\n startDate={value.start.date}\n onChangeStartDate={onChangeStartDate}\n startTime={value.start.time}\n onChangeStartTime={value =>\n setValue(oldValue => ({ ...oldValue, start: { ...oldValue.start, time: value } }))\n }\n endDate={value.end.date}\n onChangeEndDate={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, date: value } }))}\n endTime={value.end.time}\n onChangeEndTime={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, time: value } }))}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n granularity={granularity}\n />\n {customAbsoluteRangeControl && <div>{customAbsoluteRangeControl(value, interceptedSetValue)}</div>}\n </SpaceBetween>\n </div>\n {/* Can't use message here because the contents are checked in tests */}\n <InternalLiveRegion className={testutilStyles['calendar-aria-live']} hidden={true} tagName=\"span\">\n {announcement}\n </InternalLiveRegion>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addMonths,\n addYears,\n endOfDay,\n isAfter,\n isBefore,\n isSameMonth,\n isSameYear,\n startOfDay,\n startOfMonth,\n startOfYear,\n} from 'date-fns';\n\nimport { CalendarProps } from '../../calendar/interfaces';\nimport { getDateLabel, renderTimeLabel } from '../../calendar/utils/intl';\nimport { getBaseDay } from '../../calendar/utils/navigation-day';\nimport { getBaseMonth } from '../../calendar/utils/navigation-month';\nimport { useInternalI18n } from '../../i18n/context.js';\nimport { BaseComponentProps } from '../../internal/base-component';\nimport { useMobile } from '../../internal/hooks/use-mobile/index.js';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { formatDate, formatDateTime, parseDate, splitDateTime } from '../../internal/utils/date-time';\nimport { normalizeLocale, normalizeStartOfWeek } from '../../internal/utils/locale';\nimport InternalLiveRegion from '../../live-region/internal';\nimport SpaceBetween from '../../space-between/internal';\nimport { TimeInputProps } from '../../time-input/interfaces';\nimport { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';\nimport { Grids } from './grids';\nimport CalendarHeader from './header';\nimport RangeInputs from './range-inputs.js';\nimport { findDateToFocus, findMonthToDisplay, findMonthToFocus, findYearToDisplay } from './utils';\n\nimport styles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport interface DateRangePickerCalendarProps extends BaseComponentProps, Pick<CalendarProps, 'granularity'> {\n value: DateRangePickerProps.PendingAbsoluteValue;\n setValue: React.Dispatch<React.SetStateAction<DateRangePickerProps.PendingAbsoluteValue>>;\n locale?: string;\n startOfWeek?: number;\n isDateEnabled?: (date: Date) => boolean;\n dateDisabledReason?: (date: Date) => string;\n i18nStrings?: RangeCalendarI18nStrings;\n dateOnly?: boolean;\n timeInputFormat?: TimeInputProps.Format;\n customAbsoluteRangeControl: DateRangePickerProps.AbsoluteRangeControl | undefined;\n}\n\nexport default function DateRangePickerCalendar({\n value,\n setValue,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n dateDisabledReason = () => '',\n i18nStrings,\n dateOnly = false,\n timeInputFormat = 'hh:mm:ss',\n customAbsoluteRangeControl,\n granularity = 'day',\n}: DateRangePickerCalendarProps) {\n const isSingleGrid = useMobile();\n const isMonthPicker = granularity === 'month';\n const hideTime = isMonthPicker || dateOnly;\n const normalizedLocale = normalizeLocale('DateRangePicker', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n const i18n = useInternalI18n('date-range-picker');\n\n const [announcement, setAnnouncement] = useState('');\n const findPageToDisplay = isMonthPicker ? findYearToDisplay : findMonthToDisplay;\n const isSamePage = isMonthPicker ? isSameYear : isSameMonth;\n const addPage = isMonthPicker ? addYears : addMonths;\n const startOfPage = isMonthPicker ? startOfYear : startOfMonth;\n const findItemToFocus = isMonthPicker ? findMonthToFocus : findDateToFocus;\n const [currentPage, setCurrentPage] = useState(() => findPageToDisplay(value, isSingleGrid));\n const [focusedDate, setFocusedDate] = useState<Date | null>(() => {\n if (value.start.date) {\n const startDate = parseDate(value.start.date);\n if (isSamePage(startDate, currentPage)) {\n return startDate;\n }\n if (!isSingleGrid && isSamePage(startDate, addPage(currentPage, -1))) {\n return startDate;\n }\n }\n return findItemToFocus(parseDate(value.start.date), currentPage, isDateEnabled);\n });\n\n const updateCurrentPage = (startDate: string) => {\n if ((isMonthPicker && startDate.length >= 4) || startDate.length >= 8) {\n const newCurrentPage = startOfPage(parseDate(startDate));\n setCurrentPage(isSingleGrid ? newCurrentPage : addPage(newCurrentPage, 1));\n }\n };\n\n // recommended to include the start/end time announced with the selection\n // because the user is not aware of the fact that a start/end time is also set as soon as they select a date\n const announceStart = (startDate: Date) => {\n return `${i18n('i18nStrings.startDateLabel', i18nStrings?.startDateLabel)}, ${getDateLabel(normalizedLocale, startDate)}${\n hideTime\n ? ''\n : `, ${i18n('i18nStrings.startTimeLabel', i18nStrings?.startTimeLabel)}, ${renderTimeLabel(\n normalizedLocale,\n startDate,\n timeInputFormat\n )}`\n }. `;\n };\n\n const announceEnd = (endDate: Date) => {\n return `${i18n('i18nStrings.endDateLabel', i18nStrings?.endDateLabel)}, ${getDateLabel(normalizedLocale, endDate)}${\n hideTime\n ? ''\n : `, ${i18n('i18nStrings.endTimeLabel', i18nStrings?.endTimeLabel)}, ${renderTimeLabel(\n normalizedLocale,\n endDate,\n timeInputFormat\n )}`\n }. `;\n };\n\n const renderSelectedAbsoluteRangeAriaLive = i18n(\n 'i18nStrings.renderSelectedAbsoluteRangeAriaLive',\n i18nStrings?.renderSelectedAbsoluteRangeAriaLive,\n format => (startDate, endDate) => format({ startDate, endDate })\n );\n\n const announceRange = (startDate: Date, endDate: Date) => {\n if (!renderSelectedAbsoluteRangeAriaLive) {\n return `${getDateLabel(normalizedLocale, startDate)} – ${getDateLabel(normalizedLocale, endDate)}`;\n }\n return renderSelectedAbsoluteRangeAriaLive(\n getDateLabel(normalizedLocale, startDate),\n getDateLabel(normalizedLocale, endDate)\n );\n };\n\n const onSelectDateHandler = (selectedDate: Date) => {\n const { start, end } = value;\n let newStart: Date | undefined = undefined;\n let newEnd: Date | null | undefined = undefined;\n let announcement = '';\n\n // If both fields are empty, we set the start date\n if (!start.date && !end.date) {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart);\n }\n // If both fields are set, we start new\n else if (start.date && end.date) {\n newStart = startOfDay(selectedDate);\n newEnd = null;\n announcement = announceStart(newStart);\n }\n // If only the END date is empty, we fill it (and swap dates if needed)\n else if (start.date && !end.date) {\n const parsedStartDate = parseDate(start.date);\n\n if (isBefore(selectedDate, parsedStartDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(selectedDate);\n newEnd = endOfDay(parsedStartDate);\n announcement = announceStart(newStart) + announceRange(newStart, newEnd);\n } else {\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(parsedStartDate, newEnd);\n }\n }\n // If only the START date is empty, we fill it (and swap dates if needed)\n else if (!start.date && end.date) {\n const existingEndDate = parseDate(end.date);\n\n if (isAfter(selectedDate, existingEndDate)) {\n // The user has selected the range backwards, so we swap start and end\n newStart = startOfDay(existingEndDate);\n newEnd = endOfDay(selectedDate);\n announcement = announceEnd(newEnd) + announceRange(newStart, newEnd);\n } else {\n newStart = startOfDay(selectedDate);\n announcement = announceStart(newStart) + announceRange(newStart, existingEndDate);\n }\n }\n\n const formatValue = (\n date: Date | null | undefined,\n previous: DateRangePickerProps.DateTimeStrings,\n includeTime: boolean\n ): DateRangePickerProps.DateTimeStrings => {\n if (date === null) {\n // explicitly reset to empty\n return { date: '', time: '' };\n } else if (date === undefined) {\n // keep old value\n return previous;\n }\n if (!includeTime) {\n return {\n date: formatDate(date),\n time: '',\n };\n }\n return splitDateTime(formatDateTime(date));\n };\n\n setValue({\n start: formatValue(newStart, value.start, !hideTime),\n end: formatValue(newEnd, value.end, !hideTime),\n });\n setAnnouncement(announcement);\n };\n\n const onHeaderChangePageHandler = (amount: number) => {\n const addPageFn = isMonthPicker ? addYears : addMonths;\n const getBaseFn = isMonthPicker ? getBaseMonth : getBaseDay;\n const newBasePage = addPageFn(currentPage, amount);\n setCurrentPage(newBasePage);\n const newBaseDate = getBaseFn(newBasePage, isDateEnabled);\n setFocusedDate(newBaseDate);\n };\n\n const onChangeStartDate = (value: string) => {\n setValue((oldValue: DateRangePickerProps.PendingAbsoluteValue) => ({\n ...oldValue,\n start: { ...oldValue.start, date: value },\n }));\n updateCurrentPage(value);\n };\n\n const interceptedSetValue: DateRangePickerCalendarProps['setValue'] = newValue => {\n setValue(oldValue => {\n const updated = typeof newValue === 'function' ? newValue(oldValue) : newValue;\n updateCurrentPage(updated.start.date);\n return updated;\n });\n };\n\n const headingIdPrefix = useUniqueId('date-range-picker-calendar-heading');\n\n return (\n <>\n <div\n className={clsx(styles['calendar-container'], {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <SpaceBetween size=\"s\">\n <div\n className={clsx(styles.calendar, {\n [styles['one-grid']]: isSingleGrid,\n })}\n >\n <CalendarHeader\n granularity={granularity}\n baseDate={currentPage}\n locale={normalizedLocale}\n onChangePage={onHeaderChangePageHandler}\n previousPageLabel={\n isMonthPicker ? i18nStrings?.previousYearAriaLabel : i18nStrings?.previousMonthAriaLabel\n }\n nextPageLabel={isMonthPicker ? i18nStrings?.nextYearAriaLabel : i18nStrings?.nextMonthAriaLabel}\n isSingleGrid={isSingleGrid}\n headingIdPrefix={headingIdPrefix}\n />\n\n <Grids\n granularity={granularity}\n isSingleGrid={isSingleGrid}\n locale={normalizedLocale}\n baseDate={currentPage}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDateEnabled={isDateEnabled}\n dateDisabledReason={dateDisabledReason}\n onSelectDate={onSelectDateHandler}\n onPageChange={setCurrentPage}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={i18nStrings?.todayAriaLabel}\n currentMonthAriaLabel={i18nStrings?.currentMonthAriaLabel}\n selectedStartDate={value?.start?.date ? parseDate(value.start.date, !isMonthPicker) : null}\n selectedEndDate={value?.end?.date ? parseDate(value.end.date, !isMonthPicker) : null}\n headingIdPrefix={headingIdPrefix}\n />\n </div>\n\n <RangeInputs\n startDate={value.start.date}\n onChangeStartDate={onChangeStartDate}\n startTime={value.start.time}\n onChangeStartTime={value =>\n setValue(oldValue => ({ ...oldValue, start: { ...oldValue.start, time: value } }))\n }\n endDate={value.end.date}\n onChangeEndDate={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, date: value } }))}\n endTime={value.end.time}\n onChangeEndTime={value => setValue(oldValue => ({ ...oldValue, end: { ...oldValue.end, time: value } }))}\n i18nStrings={i18nStrings}\n dateOnly={dateOnly}\n timeInputFormat={timeInputFormat}\n granularity={granularity}\n />\n {customAbsoluteRangeControl && <div>{customAbsoluteRangeControl(value, interceptedSetValue)}</div>}\n </SpaceBetween>\n </div>\n {/* Can't use message here because the contents are checked in tests */}\n <InternalLiveRegion className={testutilStyles['calendar-aria-live']} hidden={true} tagName=\"span\">\n {announcement}\n </InternalLiveRegion>\n </>\n );\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { CalendarProps } from '../../calendar/interfaces';
2
3
  import { BaseComponentProps } from '../../internal/base-component';
3
4
  import { TimeInputProps } from '../../time-input/interfaces';
4
- import { DateRangePickerProps, RangeCalendarI18nStrings } from '../interfaces';
5
+ import { RangeCalendarI18nStrings } from '../interfaces';
5
6
  type I18nStrings = Pick<RangeCalendarI18nStrings, 'dateConstraintText' | 'dateTimeConstraintText' | 'monthConstraintText' | 'startMonthLabel' | 'startDateLabel' | 'startTimeLabel' | 'endMonthLabel' | 'endDateLabel' | 'endTimeLabel'>;
6
- interface RangeInputsProps extends BaseComponentProps {
7
+ interface RangeInputsProps extends BaseComponentProps, Pick<CalendarProps, 'granularity'> {
7
8
  startDate: string;
8
9
  onChangeStartDate: (value: string) => void;
9
10
  startTime: string;
@@ -15,7 +16,6 @@ interface RangeInputsProps extends BaseComponentProps {
15
16
  i18nStrings?: I18nStrings;
16
17
  dateOnly: boolean;
17
18
  timeInputFormat: TimeInputProps.Format;
18
- granularity?: DateRangePickerProps.Granularity;
19
19
  }
20
20
  export default function RangeInputs({ startDate, onChangeStartDate, startTime, onChangeStartTime, endDate, onChangeEndDate, endTime, onChangeEndTime, i18nStrings, dateOnly, timeInputFormat, granularity, }: RangeInputsProps): JSX.Element;
21
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"range-inputs.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/range-inputs.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAK/E,KAAK,WAAW,GAAG,IAAI,CACrB,wBAAwB,EACtB,oBAAoB,GACpB,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,cAAc,CACjB,CAAC;AAEF,UAAU,gBAAiB,SAAQ,kBAAkB;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC;CAChD;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,OAAO,EACP,eAAe,EACf,WAAW,EACX,QAAQ,EACR,eAAe,EACf,WAAmB,GACpB,EAAE,gBAAgB,eAkFlB"}
1
+ {"version":3,"file":"range-inputs.d.ts","sourceRoot":"","sources":["../../../../src/date-range-picker/calendar/range-inputs.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAKzD,KAAK,WAAW,GAAG,IAAI,CACrB,wBAAwB,EACtB,oBAAoB,GACpB,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,cAAc,CACjB,CAAC;AAEF,UAAU,gBAAiB,SAAQ,kBAAkB,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC;CACxC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,OAAO,EACP,eAAe,EACf,WAAW,EACX,QAAQ,EACR,eAAe,EACf,WAAmB,GACpB,EAAE,gBAAgB,eAkFlB"}