@cloudscape-design/components-themeable 3.0.974 → 3.0.975

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 (63) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/template/annotation-context/index.js +2 -2
  3. package/lib/internal/template/annotation-context/index.js.map +1 -1
  4. package/lib/internal/template/app-layout/runtime-drawer/index.js +1 -1
  5. package/lib/internal/template/app-layout/runtime-drawer/index.js.map +1 -1
  6. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.d.ts +6 -0
  7. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.d.ts.map +1 -0
  8. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.js +29 -0
  9. package/lib/internal/template/app-layout/runtime-drawer/use-runtime-drawer-context.js.map +1 -0
  10. package/lib/internal/template/date-range-picker/calendar/grids/index.js.map +1 -1
  11. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts +3 -4
  12. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.d.ts.map +1 -1
  13. package/lib/internal/template/date-range-picker/calendar/grids/interfaces.js.map +1 -1
  14. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts +0 -2
  15. package/lib/internal/template/date-range-picker/calendar/header/header-button.d.ts.map +1 -1
  16. package/lib/internal/template/date-range-picker/calendar/header/header-button.js.map +1 -1
  17. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts +2 -3
  18. package/lib/internal/template/date-range-picker/calendar/header/index.d.ts.map +1 -1
  19. package/lib/internal/template/date-range-picker/calendar/header/index.js.map +1 -1
  20. package/lib/internal/template/date-range-picker/calendar/index.d.ts +2 -2
  21. package/lib/internal/template/date-range-picker/calendar/index.d.ts.map +1 -1
  22. package/lib/internal/template/date-range-picker/calendar/index.js.map +1 -1
  23. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts +3 -3
  24. package/lib/internal/template/date-range-picker/calendar/range-inputs.d.ts.map +1 -1
  25. package/lib/internal/template/date-range-picker/calendar/range-inputs.js.map +1 -1
  26. package/lib/internal/template/date-range-picker/dropdown.d.ts +2 -2
  27. package/lib/internal/template/date-range-picker/dropdown.d.ts.map +1 -1
  28. package/lib/internal/template/date-range-picker/dropdown.js.map +1 -1
  29. package/lib/internal/template/date-range-picker/interfaces.d.ts +2 -7
  30. package/lib/internal/template/date-range-picker/interfaces.d.ts.map +1 -1
  31. package/lib/internal/template/date-range-picker/interfaces.js.map +1 -1
  32. package/lib/internal/template/date-range-picker/relative-range/index.d.ts +2 -2
  33. package/lib/internal/template/date-range-picker/relative-range/index.d.ts.map +1 -1
  34. package/lib/internal/template/date-range-picker/relative-range/index.js.map +1 -1
  35. package/lib/internal/template/i18n/provider.js +2 -2
  36. package/lib/internal/template/i18n/provider.js.map +1 -1
  37. package/lib/internal/template/internal/environment.js +1 -1
  38. package/lib/internal/template/internal/environment.json +1 -1
  39. package/lib/internal/template/internal/hooks/use-base-component/index.d.ts.map +1 -1
  40. package/lib/internal/template/internal/hooks/use-base-component/index.js +8 -5
  41. package/lib/internal/template/internal/hooks/use-base-component/index.js.map +1 -1
  42. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.d.ts +2 -0
  43. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.d.ts.map +1 -1
  44. package/lib/internal/template/internal/plugins/controllers/alert-flash-content.js.map +1 -1
  45. package/lib/internal/template/internal/plugins/controllers/drawers.d.ts +6 -0
  46. package/lib/internal/template/internal/plugins/controllers/drawers.d.ts.map +1 -1
  47. package/lib/internal/template/internal/plugins/controllers/drawers.js +17 -1
  48. package/lib/internal/template/internal/plugins/controllers/drawers.js.map +1 -1
  49. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.d.ts +7 -7
  50. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.d.ts.map +1 -1
  51. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.js +5 -2
  52. package/lib/internal/template/internal/plugins/helpers/use-discovered-content.js.map +1 -1
  53. package/lib/internal/template/popover/container.d.ts.map +1 -1
  54. package/lib/internal/template/popover/container.js +20 -7
  55. package/lib/internal/template/popover/container.js.map +1 -1
  56. package/lib/internal/template/table/body-cell/inline-editor.d.ts.map +1 -1
  57. package/lib/internal/template/table/body-cell/inline-editor.js +2 -1
  58. package/lib/internal/template/table/body-cell/inline-editor.js.map +1 -1
  59. package/package.json +1 -1
  60. package/lib/internal/template/internal/hooks/use-telemetry/index.d.ts +0 -3
  61. package/lib/internal/template/internal/hooks/use-telemetry/index.d.ts.map +0 -1
  62. package/lib/internal/template/internal/hooks/use-telemetry/index.js +0 -12
  63. package/lib/internal/template/internal/hooks/use-telemetry/index.js.map +0 -1
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "edc398833b88a84cf3e399a40bab01ceeeeae075"
2
+ "commit": "010328cd9f714fe550a9d2f21b22de12582ec777"
3
3
  }
@@ -3,7 +3,7 @@ import { __rest } from "tslib";
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { fireNonCancelableEvent } from '../internal/events';
6
- import { useTelemetry } from '../internal/hooks/use-telemetry';
6
+ import useBaseComponent from '../internal/hooks/use-base-component';
7
7
  import { applyDisplayName } from '../internal/utils/apply-display-name';
8
8
  import { ClosedAnnotation } from './annotation/closed-annotation';
9
9
  import { OpenAnnotation } from './annotation/open-annotation';
@@ -13,7 +13,7 @@ import { getStepInfo } from './utils';
13
13
  const emptyTasks = [];
14
14
  export default function AnnotationContext({ currentTutorial, children, onStepChange, onFinish: onFinishHandler, onStartTutorial, onExitTutorial, i18nStrings, }) {
15
15
  var _a, _b, _c, _d;
16
- useTelemetry('AnnotationContext');
16
+ useBaseComponent('AnnotationContext');
17
17
  const [open, setOpen] = useState(true);
18
18
  const [currentStepIndex, setCurrentStepIndex] = useState(0);
19
19
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/annotation-context/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, useMemo, useRef, useState } from 'react';\n\nimport { HotspotProps } from '../hotspot/interfaces';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useTelemetry } from '../internal/hooks/use-telemetry';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { ClosedAnnotation } from './annotation/closed-annotation';\nimport { OpenAnnotation } from './annotation/open-annotation';\nimport { HotspotContext, hotspotContext } from './context';\nimport { AnnotationContextProps } from './interfaces';\nimport { getStepInfo } from './utils';\n\nexport { AnnotationContextProps };\n\n// constant empty array to keep hook dependency stable\nconst emptyTasks: ReadonlyArray<AnnotationContextProps.Task> = [];\n\nexport default function AnnotationContext({\n currentTutorial,\n children,\n onStepChange,\n onFinish: onFinishHandler,\n onStartTutorial,\n onExitTutorial,\n i18nStrings,\n}: AnnotationContextProps): JSX.Element {\n useTelemetry('AnnotationContext');\n\n const [open, setOpen] = useState(true);\n\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n useEffect(() => {\n // When a tutorial is started, we reset the progress to the first step.\n setCurrentStepIndex(0);\n setOpen(true);\n }, [currentTutorial, setOpen]);\n\n const [availableHotspots, setAvailableHotspots] = useState<Record<string, true | undefined>>({});\n // availableHotspots is mirrored in this ref to prevent endless loops\n // in between registerHotspot and unregisterHotspot callbacks.\n const availableHotspotsRef = useRef<Record<string, true | undefined>>(availableHotspots);\n\n const annotations = currentTutorial ? currentTutorial.tasks : emptyTasks;\n const { task, step, localIndex, taskIndex } = getStepInfo(annotations, currentStepIndex);\n const currentId = step?.hotspotId;\n const totalStepCount = annotations.map(a => a.steps.length).reduce((a, b) => a + b, 0);\n\n const id2index = useMemo(() => {\n const mapping: Record<string, number> = {};\n\n let counter = 0;\n for (const annotation of annotations) {\n for (const step of annotation.steps) {\n if (mapping[step.hotspotId] === undefined) {\n mapping[step.hotspotId] = counter;\n }\n counter++;\n }\n }\n\n return mapping;\n }, [annotations]);\n\n const openNextStep = useCallback(() => {\n const newStepIndex = Math.min(currentStepIndex + 1, totalStepCount);\n setCurrentStepIndex(newStepIndex);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'next' });\n }, [currentStepIndex, onStepChange, totalStepCount]);\n\n const openPreviousStep = useCallback(() => {\n const newStepIndex = Math.max(currentStepIndex - 1, 0);\n setCurrentStepIndex(newStepIndex);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'previous' });\n }, [onStepChange, currentStepIndex]);\n\n const onFinish = useCallback(() => fireNonCancelableEvent(onFinishHandler), [onFinishHandler]);\n\n /**\n * If the currently open hotspot disappears from the page (e.g. because of a react-router navigation),\n * this Effect detects the nearest available hotspot and changes to it. This allows us to e.g. automatically\n * advance to the first step on the new page (or the last step on the previous page, in case the user\n * navigates back).\n */\n const isCurrentHotspotAvailable = currentId ? availableHotspots[currentId] : null;\n useEffect(() => {\n if (!currentId || availableHotspotsRef.current[currentId]) {\n return;\n }\n\n const findNearestHotspot = () => {\n let nearestHotspot: string | undefined = undefined;\n let nearestDistance = Infinity;\n for (const hotspotId of Object.keys(availableHotspotsRef.current)) {\n const distanceFromCurrentHotspot = Math.abs(id2index[hotspotId] - currentStepIndex);\n if (distanceFromCurrentHotspot < nearestDistance) {\n nearestDistance = distanceFromCurrentHotspot;\n nearestHotspot = hotspotId;\n }\n }\n return nearestHotspot;\n };\n\n const nearestHotspot = findNearestHotspot();\n if (nearestHotspot) {\n const newStepIndex = id2index[nearestHotspot];\n setCurrentStepIndex(newStepIndex);\n setOpen(true);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'auto-fallback' });\n }\n }, [annotations, isCurrentHotspotAvailable, currentId, currentStepIndex, id2index, onStepChange, availableHotspots]);\n\n const onDismiss = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const onOpen = useCallback(\n (stepIndex: number) => {\n setCurrentStepIndex(stepIndex);\n fireNonCancelableEvent(onStepChange, { step: stepIndex, reason: 'open' });\n setOpen(true);\n },\n [onStepChange, setOpen]\n );\n\n const idOfPreviousHotspot = getStepInfo(annotations, currentStepIndex - 1).step?.hotspotId;\n const idOfNextHotspot = getStepInfo(annotations, currentStepIndex + 1).step?.hotspotId;\n const previousHotspotIsAvailable =\n (idOfPreviousHotspot !== undefined && availableHotspots[idOfPreviousHotspot]) ?? false;\n const nextHotspotIsAvailable = (idOfNextHotspot !== undefined && availableHotspots[idOfNextHotspot]) ?? false;\n\n const getContentForId = useCallback(\n (id: string, direction: HotspotProps['direction']) => {\n if (currentTutorial?.completed) {\n return null;\n }\n\n const globalStepIndex = id2index[id];\n if (globalStepIndex === undefined) {\n // This hotspot is not used in the current tutorial.\n return null;\n }\n\n if (!task || !step || !open || id !== currentId) {\n const { task: currentTask, localIndex: currentStepIndex } = getStepInfo(annotations, globalStepIndex);\n return (\n <ClosedAnnotation\n globalStepIndex={globalStepIndex}\n i18nStrings={i18nStrings}\n onOpen={onOpen}\n focusOnRender={id === currentId}\n totalLocalSteps={currentTask ? currentTask.steps.length : 0}\n taskLocalStepIndex={currentStepIndex}\n />\n );\n }\n\n return (\n <OpenAnnotation\n i18nStrings={i18nStrings}\n direction={direction}\n title={i18nStrings.taskTitle(taskIndex, task.title)}\n content={step.content}\n alert={step.warningAlert}\n showPreviousButton={currentStepIndex !== 0}\n showFinishButton={currentStepIndex + 1 === totalStepCount}\n taskLocalStepIndex={localIndex}\n totalLocalSteps={task.steps.length}\n nextButtonEnabled={nextHotspotIsAvailable}\n onNextButtonClick={openNextStep}\n onFinish={onFinish}\n previousButtonEnabled={previousHotspotIsAvailable}\n onPreviousButtonClick={openPreviousStep}\n onDismiss={onDismiss}\n />\n );\n },\n [\n id2index,\n currentTutorial,\n task,\n step,\n open,\n currentId,\n currentStepIndex,\n i18nStrings,\n taskIndex,\n localIndex,\n totalStepCount,\n nextHotspotIsAvailable,\n openNextStep,\n onFinish,\n previousHotspotIsAvailable,\n openPreviousStep,\n onDismiss,\n onOpen,\n annotations,\n ]\n );\n\n const registerHotspot = useCallback(\n (id: string) => {\n if (!id2index || id2index[id] === undefined) {\n // This hotspot is not used in the current tutorial.\n return;\n }\n\n /*\n To ensure that all hotspots are immediately known to all triggered useEffects, we\n need to update the availableHotspotsRef BEFORE the setAvailableHotspots calls, since\n they will be batched and delayed until after the useEffects are run.\n */\n availableHotspotsRef.current = { ...availableHotspotsRef.current, [id]: true } as const;\n\n setAvailableHotspots(availableHotspots => {\n if (availableHotspots[id]) {\n return availableHotspots;\n }\n\n return { ...availableHotspots, [id]: true } as const;\n });\n },\n // We need to react on id2index changes for registering new hotspots when the map changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [id2index]\n );\n\n const unregisterHotspot = useCallback((id: string) => {\n if (!availableHotspotsRef.current[id]) {\n // Prevents unnecessary re-renders.\n return;\n }\n\n /*\n To ensure that all hotspots are immediately known to all triggered useEffects, we\n need to update the availableHotspotsRef BEFORE the setAvailableHotspots calls, since\n they will be batched and delayed until after the useEffects are run.\n */\n availableHotspotsRef.current = removeKey(id, availableHotspotsRef.current);\n\n setAvailableHotspots(availableHotspots => {\n if (!availableHotspots[id]) {\n return availableHotspots;\n }\n\n return removeKey(id, availableHotspots);\n });\n }, []);\n\n const context: HotspotContext = {\n getContentForId,\n registerHotspot,\n unregisterHotspot,\n onStartTutorial,\n onExitTutorial,\n currentStepIndex,\n currentTutorial,\n };\n\n return <hotspotContext.Provider value={context}>{children}</hotspotContext.Provider>;\n}\n\napplyDisplayName(AnnotationContext, 'AnnotationContext');\n\nfunction removeKey<T extends Record<string, unknown>>(key: keyof T, object: T) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...remainingObject } = object;\n return remainingObject;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/annotation-context/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, useMemo, useRef, useState } from 'react';\n\nimport { HotspotProps } from '../hotspot/interfaces';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { ClosedAnnotation } from './annotation/closed-annotation';\nimport { OpenAnnotation } from './annotation/open-annotation';\nimport { HotspotContext, hotspotContext } from './context';\nimport { AnnotationContextProps } from './interfaces';\nimport { getStepInfo } from './utils';\n\nexport { AnnotationContextProps };\n\n// constant empty array to keep hook dependency stable\nconst emptyTasks: ReadonlyArray<AnnotationContextProps.Task> = [];\n\nexport default function AnnotationContext({\n currentTutorial,\n children,\n onStepChange,\n onFinish: onFinishHandler,\n onStartTutorial,\n onExitTutorial,\n i18nStrings,\n}: AnnotationContextProps): JSX.Element {\n useBaseComponent('AnnotationContext');\n\n const [open, setOpen] = useState(true);\n\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n useEffect(() => {\n // When a tutorial is started, we reset the progress to the first step.\n setCurrentStepIndex(0);\n setOpen(true);\n }, [currentTutorial, setOpen]);\n\n const [availableHotspots, setAvailableHotspots] = useState<Record<string, true | undefined>>({});\n // availableHotspots is mirrored in this ref to prevent endless loops\n // in between registerHotspot and unregisterHotspot callbacks.\n const availableHotspotsRef = useRef<Record<string, true | undefined>>(availableHotspots);\n\n const annotations = currentTutorial ? currentTutorial.tasks : emptyTasks;\n const { task, step, localIndex, taskIndex } = getStepInfo(annotations, currentStepIndex);\n const currentId = step?.hotspotId;\n const totalStepCount = annotations.map(a => a.steps.length).reduce((a, b) => a + b, 0);\n\n const id2index = useMemo(() => {\n const mapping: Record<string, number> = {};\n\n let counter = 0;\n for (const annotation of annotations) {\n for (const step of annotation.steps) {\n if (mapping[step.hotspotId] === undefined) {\n mapping[step.hotspotId] = counter;\n }\n counter++;\n }\n }\n\n return mapping;\n }, [annotations]);\n\n const openNextStep = useCallback(() => {\n const newStepIndex = Math.min(currentStepIndex + 1, totalStepCount);\n setCurrentStepIndex(newStepIndex);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'next' });\n }, [currentStepIndex, onStepChange, totalStepCount]);\n\n const openPreviousStep = useCallback(() => {\n const newStepIndex = Math.max(currentStepIndex - 1, 0);\n setCurrentStepIndex(newStepIndex);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'previous' });\n }, [onStepChange, currentStepIndex]);\n\n const onFinish = useCallback(() => fireNonCancelableEvent(onFinishHandler), [onFinishHandler]);\n\n /**\n * If the currently open hotspot disappears from the page (e.g. because of a react-router navigation),\n * this Effect detects the nearest available hotspot and changes to it. This allows us to e.g. automatically\n * advance to the first step on the new page (or the last step on the previous page, in case the user\n * navigates back).\n */\n const isCurrentHotspotAvailable = currentId ? availableHotspots[currentId] : null;\n useEffect(() => {\n if (!currentId || availableHotspotsRef.current[currentId]) {\n return;\n }\n\n const findNearestHotspot = () => {\n let nearestHotspot: string | undefined = undefined;\n let nearestDistance = Infinity;\n for (const hotspotId of Object.keys(availableHotspotsRef.current)) {\n const distanceFromCurrentHotspot = Math.abs(id2index[hotspotId] - currentStepIndex);\n if (distanceFromCurrentHotspot < nearestDistance) {\n nearestDistance = distanceFromCurrentHotspot;\n nearestHotspot = hotspotId;\n }\n }\n return nearestHotspot;\n };\n\n const nearestHotspot = findNearestHotspot();\n if (nearestHotspot) {\n const newStepIndex = id2index[nearestHotspot];\n setCurrentStepIndex(newStepIndex);\n setOpen(true);\n fireNonCancelableEvent(onStepChange, { step: newStepIndex, reason: 'auto-fallback' });\n }\n }, [annotations, isCurrentHotspotAvailable, currentId, currentStepIndex, id2index, onStepChange, availableHotspots]);\n\n const onDismiss = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const onOpen = useCallback(\n (stepIndex: number) => {\n setCurrentStepIndex(stepIndex);\n fireNonCancelableEvent(onStepChange, { step: stepIndex, reason: 'open' });\n setOpen(true);\n },\n [onStepChange, setOpen]\n );\n\n const idOfPreviousHotspot = getStepInfo(annotations, currentStepIndex - 1).step?.hotspotId;\n const idOfNextHotspot = getStepInfo(annotations, currentStepIndex + 1).step?.hotspotId;\n const previousHotspotIsAvailable =\n (idOfPreviousHotspot !== undefined && availableHotspots[idOfPreviousHotspot]) ?? false;\n const nextHotspotIsAvailable = (idOfNextHotspot !== undefined && availableHotspots[idOfNextHotspot]) ?? false;\n\n const getContentForId = useCallback(\n (id: string, direction: HotspotProps['direction']) => {\n if (currentTutorial?.completed) {\n return null;\n }\n\n const globalStepIndex = id2index[id];\n if (globalStepIndex === undefined) {\n // This hotspot is not used in the current tutorial.\n return null;\n }\n\n if (!task || !step || !open || id !== currentId) {\n const { task: currentTask, localIndex: currentStepIndex } = getStepInfo(annotations, globalStepIndex);\n return (\n <ClosedAnnotation\n globalStepIndex={globalStepIndex}\n i18nStrings={i18nStrings}\n onOpen={onOpen}\n focusOnRender={id === currentId}\n totalLocalSteps={currentTask ? currentTask.steps.length : 0}\n taskLocalStepIndex={currentStepIndex}\n />\n );\n }\n\n return (\n <OpenAnnotation\n i18nStrings={i18nStrings}\n direction={direction}\n title={i18nStrings.taskTitle(taskIndex, task.title)}\n content={step.content}\n alert={step.warningAlert}\n showPreviousButton={currentStepIndex !== 0}\n showFinishButton={currentStepIndex + 1 === totalStepCount}\n taskLocalStepIndex={localIndex}\n totalLocalSteps={task.steps.length}\n nextButtonEnabled={nextHotspotIsAvailable}\n onNextButtonClick={openNextStep}\n onFinish={onFinish}\n previousButtonEnabled={previousHotspotIsAvailable}\n onPreviousButtonClick={openPreviousStep}\n onDismiss={onDismiss}\n />\n );\n },\n [\n id2index,\n currentTutorial,\n task,\n step,\n open,\n currentId,\n currentStepIndex,\n i18nStrings,\n taskIndex,\n localIndex,\n totalStepCount,\n nextHotspotIsAvailable,\n openNextStep,\n onFinish,\n previousHotspotIsAvailable,\n openPreviousStep,\n onDismiss,\n onOpen,\n annotations,\n ]\n );\n\n const registerHotspot = useCallback(\n (id: string) => {\n if (!id2index || id2index[id] === undefined) {\n // This hotspot is not used in the current tutorial.\n return;\n }\n\n /*\n To ensure that all hotspots are immediately known to all triggered useEffects, we\n need to update the availableHotspotsRef BEFORE the setAvailableHotspots calls, since\n they will be batched and delayed until after the useEffects are run.\n */\n availableHotspotsRef.current = { ...availableHotspotsRef.current, [id]: true } as const;\n\n setAvailableHotspots(availableHotspots => {\n if (availableHotspots[id]) {\n return availableHotspots;\n }\n\n return { ...availableHotspots, [id]: true } as const;\n });\n },\n // We need to react on id2index changes for registering new hotspots when the map changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [id2index]\n );\n\n const unregisterHotspot = useCallback((id: string) => {\n if (!availableHotspotsRef.current[id]) {\n // Prevents unnecessary re-renders.\n return;\n }\n\n /*\n To ensure that all hotspots are immediately known to all triggered useEffects, we\n need to update the availableHotspotsRef BEFORE the setAvailableHotspots calls, since\n they will be batched and delayed until after the useEffects are run.\n */\n availableHotspotsRef.current = removeKey(id, availableHotspotsRef.current);\n\n setAvailableHotspots(availableHotspots => {\n if (!availableHotspots[id]) {\n return availableHotspots;\n }\n\n return removeKey(id, availableHotspots);\n });\n }, []);\n\n const context: HotspotContext = {\n getContentForId,\n registerHotspot,\n unregisterHotspot,\n onStartTutorial,\n onExitTutorial,\n currentStepIndex,\n currentTutorial,\n };\n\n return <hotspotContext.Provider value={context}>{children}</hotspotContext.Provider>;\n}\n\napplyDisplayName(AnnotationContext, 'AnnotationContext');\n\nfunction removeKey<T extends Record<string, unknown>>(key: keyof T, object: T) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...remainingObject } = object;\n return remainingObject;\n}\n"]}
@@ -28,7 +28,7 @@ function RuntimeDrawerWrapper({ mountContent, unmountContent, id }) {
28
28
  var _a;
29
29
  (_a = visibilityChangeCallback.current) === null || _a === void 0 ? void 0 : _a.call(visibilityChangeCallback, isVisible);
30
30
  }, [isVisible]);
31
- return React.createElement("div", { ref: ref, className: styles['runtime-content-wrapper'] });
31
+ return React.createElement("div", { ref: ref, className: styles['runtime-content-wrapper'], "data-awsui-runtime-drawer-root-id": id });
32
32
  }
33
33
  const mapRuntimeConfigToDrawer = (runtimeConfig) => {
34
34
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAA6B,MAAM,uBAAuB,CAAC;AAK1F,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAoBrC,SAAS,oBAAoB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAA8B;IAC5F,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,wBAAwB,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,GAAG,CAAC,OAAQ,CAAC;QAC/B,YAAY,CAAC,SAAS,EAAE;YACtB,kBAAkB,EAAE,EAAE,CAAC,EAAE;gBACvB,wBAAwB,CAAC,OAAO,GAAG,EAAE,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1B,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;;QACb,MAAA,wBAAwB,CAAC,OAAO,yEAAG,SAAS,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,6BAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAQ,CAAC;AAC7E,CAAC;AAED,MAAM,wBAAwB,GAAG,CAC/B,aAAkC,EAIlC,EAAE;;IACF,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,KAAuB,aAAa,EAA/B,aAAa,UAAK,aAAa,EAA3E,6CAA2D,CAAgB,CAAC;IAElF,uCACK,aAAa,KAChB,UAAU,kBAAI,UAAU,EAAE,MAAA,aAAa,CAAC,UAAU,CAAC,OAAO,mCAAI,EAAE,IAAK,aAAa,CAAC,UAAU,GAC7F,OAAO,EAAE,OAAO;YACd,CAAC,CAAC;gBACE,OAAO,EAAE;gBACP,2CAA2C;gBAC3C,8BAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,GAAI,CAC/D;aACF;YACH,CAAC,CAAC,SAAS,EACb,OAAO,EAAE,CACP,oBAAC,oBAAoB,IACnB,GAAG,EAAE,aAAa,CAAC,EAAE,EACrB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,EAAE,EAAE,aAAa,CAAC,EAAE,GACpB,CACH,EACD,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,sBAAsB,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QACpG,CAAC,IACD;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,YAAwC,EACxC,aAAyC;IAEzC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACnE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC;QACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,CAAC,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;KAClE,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, useEffect, useRef } from 'react';\n\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../../internal/events';\nimport {\n DrawerConfig as RuntimeDrawerConfig,\n DrawerStateChangeParams,\n} from '../../internal/plugins/controllers/drawers';\nimport { sortByPriority } from '../../internal/plugins/helpers/utils';\nimport { AppLayoutProps } from '../interfaces';\nimport { ActiveDrawersContext } from '../utils/visibility-context';\n\nimport styles from './styles.css.js';\n\nexport interface RuntimeDrawer extends AppLayoutProps.Drawer {\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n}\n\nexport interface DrawersLayout {\n global: Array<RuntimeDrawer>;\n localBefore: Array<RuntimeDrawer>;\n localAfter: Array<RuntimeDrawer>;\n}\n\ntype VisibilityCallback = (isVisible: boolean) => void;\n\ninterface RuntimeContentWrapperProps {\n id?: string;\n mountContent: RuntimeDrawerConfig['mountContent'];\n unmountContent: RuntimeDrawerConfig['unmountContent'];\n}\n\nfunction RuntimeDrawerWrapper({ mountContent, unmountContent, id }: RuntimeContentWrapperProps) {\n const ref = useRef<HTMLDivElement>(null);\n const visibilityChangeCallback = useRef<VisibilityCallback | null>(null);\n const activeDrawersIds = useContext(ActiveDrawersContext);\n const isVisible = !!id && activeDrawersIds.includes(id);\n\n useEffect(() => {\n const container = ref.current!;\n mountContent(container, {\n onVisibilityChange: cb => {\n visibilityChangeCallback.current = cb;\n },\n });\n return () => {\n unmountContent(container);\n visibilityChangeCallback.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n visibilityChangeCallback.current?.(isVisible);\n }, [isVisible]);\n\n return <div ref={ref} className={styles['runtime-content-wrapper']}></div>;\n}\n\nconst mapRuntimeConfigToDrawer = (\n runtimeConfig: RuntimeDrawerConfig\n): AppLayoutProps.Drawer & {\n orderPriority?: number;\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n} => {\n const { mountContent, unmountContent, trigger, ...runtimeDrawer } = runtimeConfig;\n\n return {\n ...runtimeDrawer,\n ariaLabels: { drawerName: runtimeDrawer.ariaLabels.content ?? '', ...runtimeDrawer.ariaLabels },\n trigger: trigger\n ? {\n iconSvg: (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: trigger.iconSvg }} />\n ),\n }\n : undefined,\n content: (\n <RuntimeDrawerWrapper\n key={runtimeDrawer.id}\n mountContent={mountContent}\n unmountContent={unmountContent}\n id={runtimeDrawer.id}\n />\n ),\n onResize: event => {\n fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });\n },\n };\n};\n\nexport function convertRuntimeDrawers(\n localDrawers: Array<RuntimeDrawerConfig>,\n globalDrawers: Array<RuntimeDrawerConfig>\n): DrawersLayout {\n const converted = localDrawers.map(mapRuntimeConfigToDrawer);\n const sorted = sortByPriority(converted);\n return {\n global: sortByPriority(globalDrawers.map(mapRuntimeConfigToDrawer)),\n localBefore: sorted.filter(item => (item.orderPriority ?? 0) > 0),\n localAfter: sorted.filter(item => (item.orderPriority ?? 0) <= 0),\n };\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/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, { useContext, useEffect, useRef } from 'react';\n\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../../internal/events';\nimport {\n DrawerConfig as RuntimeDrawerConfig,\n DrawerStateChangeParams,\n} from '../../internal/plugins/controllers/drawers';\nimport { sortByPriority } from '../../internal/plugins/helpers/utils';\nimport { AppLayoutProps } from '../interfaces';\nimport { ActiveDrawersContext } from '../utils/visibility-context';\n\nimport styles from './styles.css.js';\n\nexport interface RuntimeDrawer extends AppLayoutProps.Drawer {\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n}\n\nexport interface DrawersLayout {\n global: Array<RuntimeDrawer>;\n localBefore: Array<RuntimeDrawer>;\n localAfter: Array<RuntimeDrawer>;\n}\n\ntype VisibilityCallback = (isVisible: boolean) => void;\n\ninterface RuntimeContentWrapperProps {\n id?: string;\n mountContent: RuntimeDrawerConfig['mountContent'];\n unmountContent: RuntimeDrawerConfig['unmountContent'];\n}\n\nfunction RuntimeDrawerWrapper({ mountContent, unmountContent, id }: RuntimeContentWrapperProps) {\n const ref = useRef<HTMLDivElement>(null);\n const visibilityChangeCallback = useRef<VisibilityCallback | null>(null);\n const activeDrawersIds = useContext(ActiveDrawersContext);\n const isVisible = !!id && activeDrawersIds.includes(id);\n\n useEffect(() => {\n const container = ref.current!;\n mountContent(container, {\n onVisibilityChange: cb => {\n visibilityChangeCallback.current = cb;\n },\n });\n return () => {\n unmountContent(container);\n visibilityChangeCallback.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n visibilityChangeCallback.current?.(isVisible);\n }, [isVisible]);\n\n return <div ref={ref} className={styles['runtime-content-wrapper']} data-awsui-runtime-drawer-root-id={id}></div>;\n}\n\nconst mapRuntimeConfigToDrawer = (\n runtimeConfig: RuntimeDrawerConfig\n): AppLayoutProps.Drawer & {\n orderPriority?: number;\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n} => {\n const { mountContent, unmountContent, trigger, ...runtimeDrawer } = runtimeConfig;\n\n return {\n ...runtimeDrawer,\n ariaLabels: { drawerName: runtimeDrawer.ariaLabels.content ?? '', ...runtimeDrawer.ariaLabels },\n trigger: trigger\n ? {\n iconSvg: (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: trigger.iconSvg }} />\n ),\n }\n : undefined,\n content: (\n <RuntimeDrawerWrapper\n key={runtimeDrawer.id}\n mountContent={mountContent}\n unmountContent={unmountContent}\n id={runtimeDrawer.id}\n />\n ),\n onResize: event => {\n fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });\n },\n };\n};\n\nexport function convertRuntimeDrawers(\n localDrawers: Array<RuntimeDrawerConfig>,\n globalDrawers: Array<RuntimeDrawerConfig>\n): DrawersLayout {\n const converted = localDrawers.map(mapRuntimeConfigToDrawer);\n const sorted = sortByPriority(converted);\n return {\n global: sortByPriority(globalDrawers.map(mapRuntimeConfigToDrawer)),\n localBefore: sorted.filter(item => (item.orderPriority ?? 0) > 0),\n localAfter: sorted.filter(item => (item.orderPriority ?? 0) <= 0),\n };\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { RefObject } from 'react';
2
+ import { DrawerConfig } from '../../internal/plugins/controllers/drawers';
3
+ export declare const useRuntimeDrawerContext: ({ rootRef }: {
4
+ rootRef: RefObject<HTMLElement>;
5
+ }) => DrawerConfig | null;
6
+ //# sourceMappingURL=use-runtime-drawer-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-runtime-drawer-context.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/use-runtime-drawer-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,eAAO,MAAM,uBAAuB;aAA4B,UAAU,WAAW,CAAC;yBAyBrF,CAAC"}
@@ -0,0 +1,29 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { useEffect, useState } from 'react';
4
+ import { findUpUntil } from '@cloudscape-design/component-toolkit/dom';
5
+ import { awsuiPluginsInternal } from '../../internal/plugins/api';
6
+ export const useRuntimeDrawerContext = ({ rootRef }) => {
7
+ const [drawerContext, setDrawerContext] = useState(null);
8
+ useEffect(() => {
9
+ var _a, _b;
10
+ // Determine if the hook is inside a runtime drawer.
11
+ // There’s no other reliable way to check this, since runtime drawers are separate applications rendered into specific DOM nodes.
12
+ if (!(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current)) {
13
+ return;
14
+ }
15
+ const runtimeDrawerWrapper = findUpUntil(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current, node => { var _a; return !!((_a = node === null || node === void 0 ? void 0 : node.dataset) === null || _a === void 0 ? void 0 : _a.awsuiRuntimeDrawerRootId); });
16
+ const drawerId = (_a = runtimeDrawerWrapper === null || runtimeDrawerWrapper === void 0 ? void 0 : runtimeDrawerWrapper.dataset) === null || _a === void 0 ? void 0 : _a.awsuiRuntimeDrawerRootId;
17
+ if (!drawerId) {
18
+ return;
19
+ }
20
+ const drawers = awsuiPluginsInternal.appLayout.getDrawersState();
21
+ setDrawerContext((_b = drawers === null || drawers === void 0 ? void 0 : drawers.find(drawer => drawer.id === drawerId)) !== null && _b !== void 0 ? _b : null);
22
+ return awsuiPluginsInternal.appLayout.onDrawersUpdated(drawers => {
23
+ var _a;
24
+ setDrawerContext((_a = drawers === null || drawers === void 0 ? void 0 : drawers.find(drawer => drawer.id === drawerId)) !== null && _a !== void 0 ? _a : null);
25
+ });
26
+ }, [rootRef]);
27
+ return drawerContext;
28
+ };
29
+ //# sourceMappingURL=use-runtime-drawer-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-runtime-drawer-context.js","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/use-runtime-drawer-context.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAE,OAAO,EAAuC,EAAE,EAAE;IAC1F,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE;;QACb,oDAAoD;QACpD,iIAAiI;QACjI,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,EAAE;YACrB,OAAO;SACR;QACD,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAC,OAAA,CAAC,CAAC,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,wBAAwB,CAAA,CAAA,EAAA,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,0CAAE,wBAAwB,CAAC;QAEzE,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACjE,gBAAgB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,mCAAI,IAAI,CAAC,CAAC;QAE1E,OAAO,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;;YAC/D,gBAAgB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,mCAAI,IAAI,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RefObject, useEffect, useState } from 'react';\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { awsuiPluginsInternal } from '../../internal/plugins/api';\nimport { DrawerConfig } from '../../internal/plugins/controllers/drawers';\n\nexport const useRuntimeDrawerContext = ({ rootRef }: { rootRef: RefObject<HTMLElement> }) => {\n const [drawerContext, setDrawerContext] = useState<DrawerConfig | null>(null);\n\n useEffect(() => {\n // Determine if the hook is inside a runtime drawer.\n // There’s no other reliable way to check this, since runtime drawers are separate applications rendered into specific DOM nodes.\n if (!rootRef?.current) {\n return;\n }\n const runtimeDrawerWrapper = findUpUntil(rootRef?.current, node => !!node?.dataset?.awsuiRuntimeDrawerRootId);\n const drawerId = runtimeDrawerWrapper?.dataset?.awsuiRuntimeDrawerRootId;\n\n if (!drawerId) {\n return;\n }\n\n const drawers = awsuiPluginsInternal.appLayout.getDrawersState();\n setDrawerContext(drawers?.find(drawer => drawer.id === drawerId) ?? null);\n\n return awsuiPluginsInternal.appLayout.onDrawersUpdated(drawers => {\n setDrawerContext(drawers?.find(drawer => drawer.id === drawerId) ?? null);\n });\n }, [rootRef]);\n\n return drawerContext;\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"}