@clickhouse/click-ui 0.3.0 → 0.4.0

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.
@@ -19,7 +19,11 @@ const Description = styledComponents.styled.div.withConfig({
19
19
  }) => theme.click.card.horizontal.space.md.gap);
20
20
  const Wrapper = styledComponents.styled.div.withConfig({
21
21
  componentId: "sc-1qnbjoa-2"
22
- })(["display:inline-flex;width:100%;max-width:100%;align-items:center;justify-content:flex-start;", ""], ({
22
+ })(["display:inline-flex;width:100%;max-width:100%;align-items:", ";align-self:", ";justify-content:flex-start;", ""], ({
23
+ $alignment
24
+ }) => $alignment === "top" ? "flex-start" : "center", ({
25
+ $alignment
26
+ }) => $alignment === "top" ? "stretch" : "auto", ({
23
27
  theme,
24
28
  $color,
25
29
  $size,
@@ -95,7 +99,9 @@ const ContentWrapper = styledComponents.styled.div.withConfig({
95
99
  }) => theme.breakpoint.sizes.md);
96
100
  const IconTextContentWrapper = styledComponents.styled.div.withConfig({
97
101
  componentId: "sc-1qnbjoa-5"
98
- })(["display:flex;flex-direction:row;align-items:center;width:100%;gap:", ";"], ({
102
+ })(["display:flex;flex-direction:row;align-items:", ";width:100%;gap:", ";"], ({
103
+ $alignment
104
+ }) => $alignment === "top" ? "flex-start" : "center", ({
99
105
  theme,
100
106
  $size
101
107
  }) => $size === "md" ? theme.click.card.horizontal.space.md.gap : theme.click.card.horizontal.space.sm.gap);
@@ -111,6 +117,7 @@ const CardHorizontal = ({
111
117
  children,
112
118
  color = "default",
113
119
  size = "md",
120
+ alignment = "center",
114
121
  badgeText,
115
122
  badgeState,
116
123
  badgeIcon,
@@ -130,8 +137,8 @@ const CardHorizontal = ({
130
137
  window.open(infoUrl, "_blank");
131
138
  }
132
139
  };
133
- return /* @__PURE__ */ jsxRuntime.jsx(Wrapper, { $disabled: disabled, $isSelected: isSelected, $isSelectable: isSelectable, $color: color, $size: size, tabIndex: disabled ? -1 : 0, "aria-disabled": disabled, onClick: handleClick, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(ContentWrapper, { $size: size, children: [
134
- /* @__PURE__ */ jsxRuntime.jsxs(IconTextContentWrapper, { $size: size, children: [
140
+ return /* @__PURE__ */ jsxRuntime.jsx(Wrapper, { $disabled: disabled, $isSelected: isSelected, $isSelectable: isSelectable, $color: color, $size: size, $alignment: alignment, tabIndex: disabled ? -1 : 0, "aria-disabled": disabled, onClick: handleClick, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(ContentWrapper, { $size: size, children: [
141
+ /* @__PURE__ */ jsxRuntime.jsxs(IconTextContentWrapper, { $size: size, $alignment: alignment, children: [
135
142
  icon && /* @__PURE__ */ jsxRuntime.jsx(CardIcon, { name: icon, "aria-hidden": true }),
136
143
  /* @__PURE__ */ jsxRuntime.jsxs(Container.Container, { padding: "none", orientation: "vertical", children: [
137
144
  title && /* @__PURE__ */ jsxRuntime.jsxs(Header, { as: Container.Container, isResponsive: false, gap: "xs", justifyContent: "space-between", fillWidth: true, children: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/CardHorizontal/CardHorizontal.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { Badge } from '@/components/Badge';\nimport { Button } from '@/components/Button';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport { CardHorizontalProps, CardSize, CardColor } from './CardHorizontal.types';\n\nconst Header = styled.div`\n max-width: 100%;\n gap: inherit;\n`;\n\nconst Description = styled.div`\n display: flex;\n flex-direction: column;\n align-self: start;\n gap: ${({ theme }) => theme.click.card.horizontal.space.md.gap};\n flex: 1;\n width: 100%;\n`;\n\nconst Wrapper = styled.div<{\n $hasShadow?: boolean;\n $disabled?: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $color: CardColor;\n $size?: CardSize;\n}>`\n display: inline-flex;\n width: 100%;\n max-width: 100%;\n align-items: center;\n justify-content: flex-start;\n\n ${({ theme, $color, $size, $isSelected, $isSelectable, $disabled }) => `\n background: ${theme.click.card.horizontal[$color].color.background.default};\n color: ${theme.click.card.horizontal[$color].color.title.default};\n border-radius: ${theme.click.card.horizontal.radii.all};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'hover') : 'default'\n ]\n };\n padding: ${\n $size === 'md'\n ? `${theme.click.card.horizontal.space.md.y} ${theme.click.card.horizontal.space.md.x}`\n : `${theme.click.card.horizontal.space.sm.y} ${theme.click.card.horizontal.space.sm.x}`\n };\n font: ${theme.click.card.horizontal.typography.title.default};\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.default};\n font: ${theme.click.card.horizontal.typography.description.default};\n }\n &:hover{\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'default') : 'default'\n ]\n };\n cursor: ${$isSelectable ? 'pointer' : 'default'};\n font: ${theme.click.card.horizontal.typography.title.hover};\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n }\n }\n\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'active' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'active' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? 'active' : 'default'\n ]\n };\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n }\n }\n ${\n $disabled\n ? `\n pointer-events: none;\n &,\n &:hover,\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background.disabled\n };\n color: ${theme.click.card.horizontal[$color].color.title.disabled};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelected ? 'active' : 'disabled'\n ]\n };\n cursor: not-allowed;\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.disabled};\n font: ${theme.click.card.horizontal.typography.description.disabled};\n }\n },\n &:active, &:focus, &:focus-within {\n border: 1px solid ${theme.click.card.horizontal[$color].color.stroke.active};\n }\n `\n : ''\n }\n `}\n`;\n\nconst CardIcon = styled(Icon)`\n ${({ theme }) => `\n height: ${theme.click.card.horizontal.icon.size.all};\n width: ${theme.click.card.horizontal.icon.size.all};\n `}\n`;\n\nconst ContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n\n @media (max-width: ${({ theme }) => theme.breakpoint.sizes.md}) {\n flex-direction: column;\n }\n`;\n\nconst IconTextContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n`;\n\nexport const CardHorizontal = ({\n title,\n icon,\n description,\n disabled = false,\n infoText,\n infoUrl,\n isSelected,\n isSelectable = infoText ? false : true,\n children,\n color = 'default',\n size = 'md',\n badgeText,\n badgeState,\n badgeIcon,\n badgeIconDir,\n onButtonClick,\n ...props\n}: CardHorizontalProps) => {\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof onButtonClick === 'function') {\n onButtonClick(e);\n }\n if (infoUrl && infoUrl.length > 0) {\n window.open(infoUrl, '_blank');\n }\n };\n return (\n <Wrapper\n $disabled={disabled}\n $isSelected={isSelected}\n $isSelectable={isSelectable}\n $color={color}\n $size={size}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={handleClick}\n {...props}\n >\n <ContentWrapper $size={size}>\n <IconTextContentWrapper $size={size}>\n {icon && (\n <CardIcon\n name={icon}\n aria-hidden\n />\n )}\n <Container\n padding=\"none\"\n orientation=\"vertical\"\n >\n {title && (\n <Header\n as={Container}\n isResponsive={false}\n gap=\"xs\"\n justifyContent=\"space-between\"\n fillWidth\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n isResponsive={false}\n fillWidth={false}\n grow=\"1\"\n >\n {title}\n </Container>\n {badgeText && (\n <Container\n isResponsive={false}\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-badge\"\n >\n <Badge\n text={badgeText}\n size=\"md\"\n state={badgeState}\n icon={badgeIcon}\n iconDir={badgeIconDir}\n />\n </Container>\n )}\n </Header>\n )}\n\n {description && <Description>{description}</Description>}\n {children && <Description>{children}</Description>}\n </Container>\n </IconTextContentWrapper>\n {infoText && (\n <Container\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-button\"\n >\n <Button\n label={infoText}\n onClick={handleClick}\n disabled={disabled}\n fillWidth\n />\n </Container>\n )}\n </ContentWrapper>\n </Wrapper>\n );\n};\n"],"names":["Header","styled","div","withConfig","componentId","Description","theme","click","card","horizontal","space","md","gap","Wrapper","$color","$size","$isSelected","$isSelectable","$disabled","color","background","default","title","radii","all","stroke","y","x","sm","typography","description","hover","disabled","active","CardIcon","Icon","icon","size","ContentWrapper","breakpoint","sizes","IconTextContentWrapper","CardHorizontal","infoText","infoUrl","isSelected","isSelectable","children","badgeText","badgeState","badgeIcon","badgeIconDir","onButtonClick","props","handleClick","e","preventDefault","length","window","open","jsx","jsxs","Container","Badge","Button"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/CardHorizontal/CardHorizontal.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { Badge } from '@/components/Badge';\nimport { Button } from '@/components/Button';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport {\n CardHorizontalProps,\n CardSize,\n CardColor,\n CardAlignment,\n} from './CardHorizontal.types';\n\nconst Header = styled.div`\n max-width: 100%;\n gap: inherit;\n`;\n\nconst Description = styled.div`\n display: flex;\n flex-direction: column;\n align-self: start;\n gap: ${({ theme }) => theme.click.card.horizontal.space.md.gap};\n flex: 1;\n width: 100%;\n`;\n\nconst Wrapper = styled.div<{\n $hasShadow?: boolean;\n $disabled?: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $color: CardColor;\n $size?: CardSize;\n $alignment: CardAlignment;\n}>`\n display: inline-flex;\n width: 100%;\n max-width: 100%;\n align-items: ${({ $alignment }) => ($alignment === 'top' ? 'flex-start' : 'center')};\n align-self: ${({ $alignment }) => ($alignment === 'top' ? 'stretch' : 'auto')};\n justify-content: flex-start;\n\n ${({ theme, $color, $size, $isSelected, $isSelectable, $disabled }) => `\n background: ${theme.click.card.horizontal[$color].color.background.default};\n color: ${theme.click.card.horizontal[$color].color.title.default};\n border-radius: ${theme.click.card.horizontal.radii.all};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'hover') : 'default'\n ]\n };\n padding: ${\n $size === 'md'\n ? `${theme.click.card.horizontal.space.md.y} ${theme.click.card.horizontal.space.md.x}`\n : `${theme.click.card.horizontal.space.sm.y} ${theme.click.card.horizontal.space.sm.x}`\n };\n font: ${theme.click.card.horizontal.typography.title.default};\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.default};\n font: ${theme.click.card.horizontal.typography.description.default};\n }\n &:hover{\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'default') : 'default'\n ]\n };\n cursor: ${$isSelectable ? 'pointer' : 'default'};\n font: ${theme.click.card.horizontal.typography.title.hover};\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n }\n }\n\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'active' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'active' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? 'active' : 'default'\n ]\n };\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n }\n }\n ${\n $disabled\n ? `\n pointer-events: none;\n &,\n &:hover,\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background.disabled\n };\n color: ${theme.click.card.horizontal[$color].color.title.disabled};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelected ? 'active' : 'disabled'\n ]\n };\n cursor: not-allowed;\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.disabled};\n font: ${theme.click.card.horizontal.typography.description.disabled};\n }\n },\n &:active, &:focus, &:focus-within {\n border: 1px solid ${theme.click.card.horizontal[$color].color.stroke.active};\n }\n `\n : ''\n }\n `}\n`;\n\nconst CardIcon = styled(Icon)`\n ${({ theme }) => `\n height: ${theme.click.card.horizontal.icon.size.all};\n width: ${theme.click.card.horizontal.icon.size.all};\n `}\n`;\n\nconst ContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n\n @media (max-width: ${({ theme }) => theme.breakpoint.sizes.md}) {\n flex-direction: column;\n }\n`;\n\nconst IconTextContentWrapper = styled.div<{ $size: CardSize; $alignment: CardAlignment }>`\n display: flex;\n flex-direction: row;\n align-items: ${({ $alignment }) => ($alignment === 'top' ? 'flex-start' : 'center')};\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n`;\n\nexport const CardHorizontal = ({\n title,\n icon,\n description,\n disabled = false,\n infoText,\n infoUrl,\n isSelected,\n isSelectable = infoText ? false : true,\n children,\n color = 'default',\n size = 'md',\n alignment = 'center',\n badgeText,\n badgeState,\n badgeIcon,\n badgeIconDir,\n onButtonClick,\n ...props\n}: CardHorizontalProps) => {\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof onButtonClick === 'function') {\n onButtonClick(e);\n }\n if (infoUrl && infoUrl.length > 0) {\n window.open(infoUrl, '_blank');\n }\n };\n return (\n <Wrapper\n $disabled={disabled}\n $isSelected={isSelected}\n $isSelectable={isSelectable}\n $color={color}\n $size={size}\n $alignment={alignment}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={handleClick}\n {...props}\n >\n <ContentWrapper $size={size}>\n <IconTextContentWrapper\n $size={size}\n $alignment={alignment}\n >\n {icon && (\n <CardIcon\n name={icon}\n aria-hidden\n />\n )}\n <Container\n padding=\"none\"\n orientation=\"vertical\"\n >\n {title && (\n <Header\n as={Container}\n isResponsive={false}\n gap=\"xs\"\n justifyContent=\"space-between\"\n fillWidth\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n isResponsive={false}\n fillWidth={false}\n grow=\"1\"\n >\n {title}\n </Container>\n {badgeText && (\n <Container\n isResponsive={false}\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-badge\"\n >\n <Badge\n text={badgeText}\n size=\"md\"\n state={badgeState}\n icon={badgeIcon}\n iconDir={badgeIconDir}\n />\n </Container>\n )}\n </Header>\n )}\n\n {description && <Description>{description}</Description>}\n {children && <Description>{children}</Description>}\n </Container>\n </IconTextContentWrapper>\n {infoText && (\n <Container\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-button\"\n >\n <Button\n label={infoText}\n onClick={handleClick}\n disabled={disabled}\n fillWidth\n />\n </Container>\n )}\n </ContentWrapper>\n </Wrapper>\n );\n};\n"],"names":["Header","styled","div","withConfig","componentId","Description","theme","click","card","horizontal","space","md","gap","Wrapper","$alignment","$color","$size","$isSelected","$isSelectable","$disabled","color","background","default","title","radii","all","stroke","y","x","sm","typography","description","hover","disabled","active","CardIcon","Icon","icon","size","ContentWrapper","breakpoint","sizes","IconTextContentWrapper","CardHorizontal","infoText","infoUrl","isSelected","isSelectable","children","alignment","badgeText","badgeState","badgeIcon","badgeIconDir","onButtonClick","props","handleClick","e","preventDefault","length","window","open","jsx","jsxs","Container","Badge","Button"],"mappings":"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"}
@@ -189,7 +189,7 @@ const PredefinedTimes = ({
189
189
  const handleItemClick = () => {
190
190
  setStartDate(startDate);
191
191
  setEndDate(endDate);
192
- onSelectDateRange(startDate, endDate);
192
+ onSelectDateRange(startDate, endDate, label);
193
193
  };
194
194
  const rangeIsSelected = selectedEndDate && selectedEndDate === endDate && selectedStartDate && selectedStartDate === startDate;
195
195
  return /* @__PURE__ */ jsxRuntime.jsx(Common.StyledDropdownItem, { "data-testid": `predefined-date-${startDate.getTime()}`, onClick: handleItemClick, children: /* @__PURE__ */ jsxRuntime.jsxs(Container.Container, { "data-selected": rangeIsSelected, "data-testid": label, justifyContent: "space-between", orientation: "horizontal", children: [
@@ -198,7 +198,7 @@ const PredefinedTimes = ({
198
198
  ] }) }, startDate.toISOString());
199
199
  }) }),
200
200
  /* @__PURE__ */ jsxRuntime.jsx(Common.StyledDropdownItem, { onClick: handleCustomTimePeriodClick, children: /* @__PURE__ */ jsxRuntime.jsxs(Container.Container, { justifyContent: "space-between", orientation: "horizontal", children: [
201
- "Since a specific date and time ",
201
+ "Custom time period ",
202
202
  /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: "chevron-right" })
203
203
  ] }) })
204
204
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate === endDate &&\n selectedStartDate &&\n selectedStartDate === startDate;\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Since a specific date and time <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent align=\"start\">\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","jsx","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","StyledDropdownItem","getTime","jsxs","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","Label","TextField","ButtonGroup","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","Text","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length","DateTimeRangePickerInput","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimeRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate, label);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate === endDate &&\n selectedStartDate &&\n selectedStartDate === startDate;\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent align=\"start\">\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","jsx","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","StyledDropdownItem","getTime","jsxs","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","Label","TextField","ButtonGroup","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","Text","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length","DateTimeRangePickerInput","Fragment"],"mappings":"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"}
@@ -15,7 +15,11 @@ const Description = styled.div.withConfig({
15
15
  }) => theme.click.card.horizontal.space.md.gap);
16
16
  const Wrapper = styled.div.withConfig({
17
17
  componentId: "sc-1qnbjoa-2"
18
- })(["display:inline-flex;width:100%;max-width:100%;align-items:center;justify-content:flex-start;", ""], ({
18
+ })(["display:inline-flex;width:100%;max-width:100%;align-items:", ";align-self:", ";justify-content:flex-start;", ""], ({
19
+ $alignment
20
+ }) => $alignment === "top" ? "flex-start" : "center", ({
21
+ $alignment
22
+ }) => $alignment === "top" ? "stretch" : "auto", ({
19
23
  theme,
20
24
  $color,
21
25
  $size,
@@ -91,7 +95,9 @@ const ContentWrapper = styled.div.withConfig({
91
95
  }) => theme.breakpoint.sizes.md);
92
96
  const IconTextContentWrapper = styled.div.withConfig({
93
97
  componentId: "sc-1qnbjoa-5"
94
- })(["display:flex;flex-direction:row;align-items:center;width:100%;gap:", ";"], ({
98
+ })(["display:flex;flex-direction:row;align-items:", ";width:100%;gap:", ";"], ({
99
+ $alignment
100
+ }) => $alignment === "top" ? "flex-start" : "center", ({
95
101
  theme,
96
102
  $size
97
103
  }) => $size === "md" ? theme.click.card.horizontal.space.md.gap : theme.click.card.horizontal.space.sm.gap);
@@ -107,6 +113,7 @@ const CardHorizontal = ({
107
113
  children,
108
114
  color = "default",
109
115
  size = "md",
116
+ alignment = "center",
110
117
  badgeText,
111
118
  badgeState,
112
119
  badgeIcon,
@@ -126,8 +133,8 @@ const CardHorizontal = ({
126
133
  window.open(infoUrl, "_blank");
127
134
  }
128
135
  };
129
- return /* @__PURE__ */ jsx(Wrapper, { $disabled: disabled, $isSelected: isSelected, $isSelectable: isSelectable, $color: color, $size: size, tabIndex: disabled ? -1 : 0, "aria-disabled": disabled, onClick: handleClick, ...props, children: /* @__PURE__ */ jsxs(ContentWrapper, { $size: size, children: [
130
- /* @__PURE__ */ jsxs(IconTextContentWrapper, { $size: size, children: [
136
+ return /* @__PURE__ */ jsx(Wrapper, { $disabled: disabled, $isSelected: isSelected, $isSelectable: isSelectable, $color: color, $size: size, $alignment: alignment, tabIndex: disabled ? -1 : 0, "aria-disabled": disabled, onClick: handleClick, ...props, children: /* @__PURE__ */ jsxs(ContentWrapper, { $size: size, children: [
137
+ /* @__PURE__ */ jsxs(IconTextContentWrapper, { $size: size, $alignment: alignment, children: [
131
138
  icon && /* @__PURE__ */ jsx(CardIcon, { name: icon, "aria-hidden": true }),
132
139
  /* @__PURE__ */ jsxs(Container, { padding: "none", orientation: "vertical", children: [
133
140
  title && /* @__PURE__ */ jsxs(Header, { as: Container, isResponsive: false, gap: "xs", justifyContent: "space-between", fillWidth: true, children: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/CardHorizontal/CardHorizontal.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { Badge } from '@/components/Badge';\nimport { Button } from '@/components/Button';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport { CardHorizontalProps, CardSize, CardColor } from './CardHorizontal.types';\n\nconst Header = styled.div`\n max-width: 100%;\n gap: inherit;\n`;\n\nconst Description = styled.div`\n display: flex;\n flex-direction: column;\n align-self: start;\n gap: ${({ theme }) => theme.click.card.horizontal.space.md.gap};\n flex: 1;\n width: 100%;\n`;\n\nconst Wrapper = styled.div<{\n $hasShadow?: boolean;\n $disabled?: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $color: CardColor;\n $size?: CardSize;\n}>`\n display: inline-flex;\n width: 100%;\n max-width: 100%;\n align-items: center;\n justify-content: flex-start;\n\n ${({ theme, $color, $size, $isSelected, $isSelectable, $disabled }) => `\n background: ${theme.click.card.horizontal[$color].color.background.default};\n color: ${theme.click.card.horizontal[$color].color.title.default};\n border-radius: ${theme.click.card.horizontal.radii.all};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'hover') : 'default'\n ]\n };\n padding: ${\n $size === 'md'\n ? `${theme.click.card.horizontal.space.md.y} ${theme.click.card.horizontal.space.md.x}`\n : `${theme.click.card.horizontal.space.sm.y} ${theme.click.card.horizontal.space.sm.x}`\n };\n font: ${theme.click.card.horizontal.typography.title.default};\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.default};\n font: ${theme.click.card.horizontal.typography.description.default};\n }\n &:hover{\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'default') : 'default'\n ]\n };\n cursor: ${$isSelectable ? 'pointer' : 'default'};\n font: ${theme.click.card.horizontal.typography.title.hover};\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n }\n }\n\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'active' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'active' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? 'active' : 'default'\n ]\n };\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n }\n }\n ${\n $disabled\n ? `\n pointer-events: none;\n &,\n &:hover,\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background.disabled\n };\n color: ${theme.click.card.horizontal[$color].color.title.disabled};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelected ? 'active' : 'disabled'\n ]\n };\n cursor: not-allowed;\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.disabled};\n font: ${theme.click.card.horizontal.typography.description.disabled};\n }\n },\n &:active, &:focus, &:focus-within {\n border: 1px solid ${theme.click.card.horizontal[$color].color.stroke.active};\n }\n `\n : ''\n }\n `}\n`;\n\nconst CardIcon = styled(Icon)`\n ${({ theme }) => `\n height: ${theme.click.card.horizontal.icon.size.all};\n width: ${theme.click.card.horizontal.icon.size.all};\n `}\n`;\n\nconst ContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n\n @media (max-width: ${({ theme }) => theme.breakpoint.sizes.md}) {\n flex-direction: column;\n }\n`;\n\nconst IconTextContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n`;\n\nexport const CardHorizontal = ({\n title,\n icon,\n description,\n disabled = false,\n infoText,\n infoUrl,\n isSelected,\n isSelectable = infoText ? false : true,\n children,\n color = 'default',\n size = 'md',\n badgeText,\n badgeState,\n badgeIcon,\n badgeIconDir,\n onButtonClick,\n ...props\n}: CardHorizontalProps) => {\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof onButtonClick === 'function') {\n onButtonClick(e);\n }\n if (infoUrl && infoUrl.length > 0) {\n window.open(infoUrl, '_blank');\n }\n };\n return (\n <Wrapper\n $disabled={disabled}\n $isSelected={isSelected}\n $isSelectable={isSelectable}\n $color={color}\n $size={size}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={handleClick}\n {...props}\n >\n <ContentWrapper $size={size}>\n <IconTextContentWrapper $size={size}>\n {icon && (\n <CardIcon\n name={icon}\n aria-hidden\n />\n )}\n <Container\n padding=\"none\"\n orientation=\"vertical\"\n >\n {title && (\n <Header\n as={Container}\n isResponsive={false}\n gap=\"xs\"\n justifyContent=\"space-between\"\n fillWidth\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n isResponsive={false}\n fillWidth={false}\n grow=\"1\"\n >\n {title}\n </Container>\n {badgeText && (\n <Container\n isResponsive={false}\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-badge\"\n >\n <Badge\n text={badgeText}\n size=\"md\"\n state={badgeState}\n icon={badgeIcon}\n iconDir={badgeIconDir}\n />\n </Container>\n )}\n </Header>\n )}\n\n {description && <Description>{description}</Description>}\n {children && <Description>{children}</Description>}\n </Container>\n </IconTextContentWrapper>\n {infoText && (\n <Container\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-button\"\n >\n <Button\n label={infoText}\n onClick={handleClick}\n disabled={disabled}\n fillWidth\n />\n </Container>\n )}\n </ContentWrapper>\n </Wrapper>\n );\n};\n"],"names":["Header","styled","div","withConfig","componentId","Description","theme","click","card","horizontal","space","md","gap","Wrapper","$color","$size","$isSelected","$isSelectable","$disabled","color","background","default","title","radii","all","stroke","y","x","sm","typography","description","hover","disabled","active","CardIcon","Icon","icon","size","ContentWrapper","breakpoint","sizes","IconTextContentWrapper","CardHorizontal","infoText","infoUrl","isSelected","isSelectable","children","badgeText","badgeState","badgeIcon","badgeIconDir","onButtonClick","props","handleClick","e","preventDefault","length","window","open","Container"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/CardHorizontal/CardHorizontal.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { Badge } from '@/components/Badge';\nimport { Button } from '@/components/Button';\nimport { Container } from '@/components/Container';\nimport { Icon } from '@/components/Icon';\nimport {\n CardHorizontalProps,\n CardSize,\n CardColor,\n CardAlignment,\n} from './CardHorizontal.types';\n\nconst Header = styled.div`\n max-width: 100%;\n gap: inherit;\n`;\n\nconst Description = styled.div`\n display: flex;\n flex-direction: column;\n align-self: start;\n gap: ${({ theme }) => theme.click.card.horizontal.space.md.gap};\n flex: 1;\n width: 100%;\n`;\n\nconst Wrapper = styled.div<{\n $hasShadow?: boolean;\n $disabled?: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $color: CardColor;\n $size?: CardSize;\n $alignment: CardAlignment;\n}>`\n display: inline-flex;\n width: 100%;\n max-width: 100%;\n align-items: ${({ $alignment }) => ($alignment === 'top' ? 'flex-start' : 'center')};\n align-self: ${({ $alignment }) => ($alignment === 'top' ? 'stretch' : 'auto')};\n justify-content: flex-start;\n\n ${({ theme, $color, $size, $isSelected, $isSelectable, $disabled }) => `\n background: ${theme.click.card.horizontal[$color].color.background.default};\n color: ${theme.click.card.horizontal[$color].color.title.default};\n border-radius: ${theme.click.card.horizontal.radii.all};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'hover') : 'default'\n ]\n };\n padding: ${\n $size === 'md'\n ? `${theme.click.card.horizontal.space.md.y} ${theme.click.card.horizontal.space.md.x}`\n : `${theme.click.card.horizontal.space.sm.y} ${theme.click.card.horizontal.space.sm.x}`\n };\n font: ${theme.click.card.horizontal.typography.title.default};\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.default};\n font: ${theme.click.card.horizontal.typography.description.default};\n }\n &:hover{\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? ($isSelected ? 'active' : 'default') : 'default'\n ]\n };\n cursor: ${$isSelectable ? 'pointer' : 'default'};\n font: ${theme.click.card.horizontal.typography.title.hover};\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'hover' : 'default'\n ]\n };\n }\n }\n\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background[\n $isSelectable ? 'active' : 'default'\n ]\n };\n color: ${\n theme.click.card.horizontal[$color].color.title[\n $isSelectable ? 'active' : 'default'\n ]\n };\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelectable ? 'active' : 'default'\n ]\n };\n ${Description} {\n color: ${\n theme.click.card.horizontal[$color].color.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n font: ${\n theme.click.card.horizontal.typography.description[\n $isSelectable ? 'active' : 'default'\n ]\n };\n }\n }\n ${\n $disabled\n ? `\n pointer-events: none;\n &,\n &:hover,\n &:active, &:focus, &:focus-within {\n background-color: ${\n theme.click.card.horizontal[$color].color.background.disabled\n };\n color: ${theme.click.card.horizontal[$color].color.title.disabled};\n border: 1px solid ${\n theme.click.card.horizontal[$color].color.stroke[\n $isSelected ? 'active' : 'disabled'\n ]\n };\n cursor: not-allowed;\n ${Description} {\n color: ${theme.click.card.horizontal[$color].color.description.disabled};\n font: ${theme.click.card.horizontal.typography.description.disabled};\n }\n },\n &:active, &:focus, &:focus-within {\n border: 1px solid ${theme.click.card.horizontal[$color].color.stroke.active};\n }\n `\n : ''\n }\n `}\n`;\n\nconst CardIcon = styled(Icon)`\n ${({ theme }) => `\n height: ${theme.click.card.horizontal.icon.size.all};\n width: ${theme.click.card.horizontal.icon.size.all};\n `}\n`;\n\nconst ContentWrapper = styled.div<{ $size: CardSize }>`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n\n @media (max-width: ${({ theme }) => theme.breakpoint.sizes.md}) {\n flex-direction: column;\n }\n`;\n\nconst IconTextContentWrapper = styled.div<{ $size: CardSize; $alignment: CardAlignment }>`\n display: flex;\n flex-direction: row;\n align-items: ${({ $alignment }) => ($alignment === 'top' ? 'flex-start' : 'center')};\n width: 100%;\n gap: ${({ theme, $size }) =>\n $size === 'md'\n ? theme.click.card.horizontal.space.md.gap\n : theme.click.card.horizontal.space.sm.gap};\n`;\n\nexport const CardHorizontal = ({\n title,\n icon,\n description,\n disabled = false,\n infoText,\n infoUrl,\n isSelected,\n isSelectable = infoText ? false : true,\n children,\n color = 'default',\n size = 'md',\n alignment = 'center',\n badgeText,\n badgeState,\n badgeIcon,\n badgeIconDir,\n onButtonClick,\n ...props\n}: CardHorizontalProps) => {\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof onButtonClick === 'function') {\n onButtonClick(e);\n }\n if (infoUrl && infoUrl.length > 0) {\n window.open(infoUrl, '_blank');\n }\n };\n return (\n <Wrapper\n $disabled={disabled}\n $isSelected={isSelected}\n $isSelectable={isSelectable}\n $color={color}\n $size={size}\n $alignment={alignment}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={handleClick}\n {...props}\n >\n <ContentWrapper $size={size}>\n <IconTextContentWrapper\n $size={size}\n $alignment={alignment}\n >\n {icon && (\n <CardIcon\n name={icon}\n aria-hidden\n />\n )}\n <Container\n padding=\"none\"\n orientation=\"vertical\"\n >\n {title && (\n <Header\n as={Container}\n isResponsive={false}\n gap=\"xs\"\n justifyContent=\"space-between\"\n fillWidth\n >\n <Container\n orientation=\"horizontal\"\n gap=\"xs\"\n isResponsive={false}\n fillWidth={false}\n grow=\"1\"\n >\n {title}\n </Container>\n {badgeText && (\n <Container\n isResponsive={false}\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-badge\"\n >\n <Badge\n text={badgeText}\n size=\"md\"\n state={badgeState}\n icon={badgeIcon}\n iconDir={badgeIconDir}\n />\n </Container>\n )}\n </Header>\n )}\n\n {description && <Description>{description}</Description>}\n {children && <Description>{children}</Description>}\n </Container>\n </IconTextContentWrapper>\n {infoText && (\n <Container\n justifyContent=\"end\"\n fillWidth={false}\n data-testid=\"horizontal-card-button\"\n >\n <Button\n label={infoText}\n onClick={handleClick}\n disabled={disabled}\n fillWidth\n />\n </Container>\n )}\n </ContentWrapper>\n </Wrapper>\n );\n};\n"],"names":["Header","styled","div","withConfig","componentId","Description","theme","click","card","horizontal","space","md","gap","Wrapper","$alignment","$color","$size","$isSelected","$isSelectable","$disabled","color","background","default","title","radii","all","stroke","y","x","sm","typography","description","hover","disabled","active","CardIcon","Icon","icon","size","ContentWrapper","breakpoint","sizes","IconTextContentWrapper","CardHorizontal","infoText","infoUrl","isSelected","isSelectable","children","alignment","badgeText","badgeState","badgeIcon","badgeIconDir","onButtonClick","props","handleClick","e","preventDefault","length","window","open","Container"],"mappings":"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"}
@@ -181,7 +181,7 @@ const PredefinedTimes = ({
181
181
  const handleItemClick = () => {
182
182
  setStartDate(startDate);
183
183
  setEndDate(endDate);
184
- onSelectDateRange(startDate, endDate);
184
+ onSelectDateRange(startDate, endDate, label);
185
185
  };
186
186
  const rangeIsSelected = selectedEndDate && selectedEndDate === endDate && selectedStartDate && selectedStartDate === startDate;
187
187
  return /* @__PURE__ */ jsx(StyledDropdownItem, { "data-testid": `predefined-date-${startDate.getTime()}`, onClick: handleItemClick, children: /* @__PURE__ */ jsxs(Container, { "data-selected": rangeIsSelected, "data-testid": label, justifyContent: "space-between", orientation: "horizontal", children: [
@@ -190,7 +190,7 @@ const PredefinedTimes = ({
190
190
  ] }) }, startDate.toISOString());
191
191
  }) }),
192
192
  /* @__PURE__ */ jsx(StyledDropdownItem, { onClick: handleCustomTimePeriodClick, children: /* @__PURE__ */ jsxs(Container, { justifyContent: "space-between", orientation: "horizontal", children: [
193
- "Since a specific date and time ",
193
+ "Custom time period ",
194
194
  /* @__PURE__ */ jsx(SvgImage, { name: "chevron-right" })
195
195
  ] }) })
196
196
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeRangePicker.js","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate === endDate &&\n selectedStartDate &&\n selectedStartDate === startDate;\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Since a specific date and time <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent align=\"start\">\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","getTime","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimeRangePicker.js","sources":["../../../../src/components/DatePicker/DateTimeRangePicker.tsx"],"sourcesContent":["import {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { styled } from 'styled-components';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateTimeRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '../Container/Container';\nimport { Panel } from '../Panel/Panel';\nimport { Icon } from '../Icon/Icon';\nimport {\n DateRangeListItem,\n datesAreWithinMaxRange,\n shiftFromTimezone,\n Meridiem,\n Timezone,\n shiftToTimezone,\n dateRangeIsValid,\n} from './utils';\nimport { dayjs, Dayjs } from '@/utils/date';\nimport { Tabs } from '../Tabs/Tabs';\nimport { TextField } from '@/components/TextField';\nimport { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { Label } from '../Label/Label';\nimport { Text } from '../Text';\n\nconst calendarFullWidth = '258px';\n\nconst PredefinedCalendarContainer = styled(Panel)`\n align-items: start;\n background: ${({ theme }) => theme.click.panel.color.background.muted};\n`;\n\nconst PredefinedTimesContainer = styled(Container)`\n width: ${calendarFullWidth};\n`;\n\ntype OpenDirection = 'left' | 'right';\n\n// left value of 259px is the width of the PredefinedTimesContainer + 1 pixel for border\nconst CalendarRendererContainer = styled.div<{ $openDirection?: OpenDirection }>`\n background: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.color.background.default}`};\n border: ${({ theme }) =>\n `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`};\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n box-shadow:\n lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,\n lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;\n ${({ $openDirection }) => ($openDirection === 'left' ? 'right: 100%;' : 'left: 259px;')}\n position: absolute;\n top: 0;\n`;\n\nconst NoOverflowDropdownContent = styled(Dropdown.Content)`\n overflow-y: hidden;\n`;\n\n// Height of 221px is height the height the calendar needs to match the PredefinedTimesContainer\nconst StyledCalendarRenderer = styled(CalendarRenderer)`\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n min-height: 221px;\n`;\n\nconst BottomPaddingTabs = styled(Tabs)`\n padding-bottom: ${({ theme }) => `${theme.sizes[3]};`};\n`;\n\nconst StyledTriggerList = styled(Tabs.TriggersList)`\n justify-content: space-around;\n`;\n\n// max-height of 210px allows the scrollable container to be a reasonble height that matches the calendar\nconst ScrollableContainer = styled(Container)`\n max-height: 210px;\n overflow-y: auto;\n`;\n\nconst TimeInputContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst DateRangeTableCell = styled(DateTableCell)<{\n $shouldShowRangeIndicator?: boolean;\n}>`\n ${({ $shouldShowRangeIndicator, theme }) =>\n $shouldShowRangeIndicator &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.range};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range};\n border-radius: 0;\n `}\n`;\n\ntype CalendarType = 'startDate' | 'endDate';\n\ntype SetSelectedDate = (selectedDate: Date, calendarType: CalendarType) => void;\n\ntype SetDate = (date: Date) => void;\n\ninterface CalendarProps {\n calendarBody: Body;\n calendarType: CalendarType;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: SetSelectedDate;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n calendarBody,\n calendarType,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n\n const isCurrentDate = isSameDate(today, fullDate);\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n futureStartDatesDisabled &&\n calendarType === 'startDate' &&\n fullDate > today\n ) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)\n ) {\n isDisabled = true;\n }\n\n // start date is selected, end date is not; disable anything before start date\n if (\n calendarType === 'endDate' &&\n !shiftedEnd &&\n shiftedStart &&\n shiftedStart > fullDate &&\n !isSameDate(shiftedStart, fullDate)\n ) {\n isDisabled = true;\n }\n\n // start date isn't selected, but end date is; disable anything after end date\n if (\n calendarType === 'startDate' &&\n !shiftedStart &&\n shiftedEnd &&\n fullDate > shiftedEnd\n ) {\n isDisabled = true;\n }\n\n const startDateSelectedAndIsSelectingEndDate =\n calendarType === 'endDate' &&\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const endDateSelectedAndIsSelectingStartDate =\n calendarType === 'startDate' &&\n !shiftedStart &&\n Boolean(\n shiftedEnd && hoveredDate && fullDate < shiftedEnd && fullDate > hoveredDate\n );\n\n const shouldShowRangeIndicator =\n startDateSelectedAndIsSelectingEndDate ||\n endDateSelectedAndIsSelectingStartDate;\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n\n const originalFullDate = shiftFromTimezone(fullDate, timezone);\n\n // If the user selects a start date and changes the start date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'startDate' && startDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(startDate.getUTCHours());\n originalFullDate.setUTCMinutes(startDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(startDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(startDate.getHours());\n originalFullDate.setMinutes(startDate.getMinutes());\n originalFullDate.setSeconds(startDate.getSeconds());\n }\n }\n\n // If the user selects an end date and changes the end date\n // use any hours, minutes, seconds they've already set\n if (calendarType === 'endDate' && endDate) {\n if (timezone === 'UTC') {\n originalFullDate.setUTCHours(endDate.getUTCHours());\n originalFullDate.setUTCMinutes(endDate.getUTCMinutes());\n originalFullDate.setUTCSeconds(endDate.getUTCSeconds());\n } else {\n originalFullDate.setHours(endDate.getHours());\n originalFullDate.setMinutes(endDate.getMinutes());\n originalFullDate.setSeconds(endDate.getSeconds());\n }\n }\n\n setSelectedDate(originalFullDate, calendarType);\n };\n\n return (\n <DateRangeTableCell\n $shouldShowRangeIndicator={\n shouldShowRangeIndicator || isBetweenStartAndEndDates\n }\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isCurrentDate}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedTimesProps {\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n predefinedTimesList: DateRangeListItem[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n}\n\nconst PredefinedTimes = ({\n onSelectDateRange,\n predefinedTimesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n}: PredefinedTimesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedTimesContainer\n data-testid=\"predefined-times-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate, label);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n selectedEndDate === endDate &&\n selectedStartDate &&\n selectedStartDate === startDate;\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={label}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {label}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedTimesContainer>\n );\n};\n\nconst parseTimeString = (\n timeString: string\n): { isValid: boolean; parsedDate?: Dayjs } => {\n if (!validTimeRegex.test(timeString)) {\n return { isValid: false };\n }\n\n const [hours, minutes, seconds] = timeString.split(':');\n\n const hoursAsNumber = parseInt(hours, 10);\n if (Number.isNaN(hoursAsNumber)) {\n return { isValid: false };\n }\n\n if (hoursAsNumber > 23 || hoursAsNumber < 0) {\n return { isValid: false };\n }\n\n let parsedDate;\n if (!minutes) {\n parsedDate = dayjs(hours, 'h');\n } else {\n const minutesAsNumber = parseInt(minutes, 10);\n if (Number.isNaN(minutesAsNumber)) {\n return { isValid: false };\n }\n\n if (minutesAsNumber > 59 || minutesAsNumber < 0) {\n return { isValid: false };\n }\n\n if (!seconds) {\n parsedDate = dayjs(`${hours}:${minutes}`, 'h:mm');\n } else {\n const secondsAsNumber = parseInt(seconds, 10);\n\n if (Number.isNaN(secondsAsNumber)) {\n return { isValid: false };\n }\n\n if (secondsAsNumber > 59 || secondsAsNumber < 0) {\n return { isValid: false };\n }\n\n parsedDate = dayjs(`${hours}:${minutes}:${seconds}`, 'h:mm:ss');\n }\n }\n\n if (!parsedDate.isValid()) {\n return { isValid: false };\n }\n\n return { isValid: true, parsedDate };\n};\n\nconst validTimeRegex = /^\\d{1,2}(:\\d{1,2}(:\\d{1,2})?)?$/;\n\ninterface TimeInputProps {\n date: Date | undefined;\n setDate: (date: Date) => void;\n shouldShowSeconds: boolean;\n timezone: Timezone;\n}\n\nconst TimeInput = ({ date, setDate, shouldShowSeconds, timezone }: TimeInputProps) => {\n let dayjsDate = timezone === 'UTC' ? dayjs.utc(date) : dayjs(date);\n\n if (!date) {\n dayjsDate = dayjsDate.hour(12).minute(0);\n }\n\n const formattedDate = shouldShowSeconds\n ? dayjsDate.format('hh:mm:ss')\n : dayjsDate.format('hh:mm');\n const [timeString, setTimeString] = useState<string>(formattedDate);\n const [dateIsValid, setDateIsValid] = useState<boolean>(true);\n const [meridiem, setMeridiem] = useState<Meridiem>();\n const isEnabled = Boolean(date);\n\n useEffect(() => {\n if (date) {\n setMeridiem(dayjsDate.format('a') as Meridiem);\n }\n }, [date, dayjsDate]);\n\n const handleTimeChange = useCallback(\n (newTimeString: string) => {\n setTimeString(newTimeString);\n\n if (!date) {\n return;\n }\n\n const trimmedTime = newTimeString.trim();\n if (!trimmedTime) {\n return;\n }\n\n const { isValid, parsedDate } = parseTimeString(trimmedTime);\n\n if (!isValid) {\n setDateIsValid(false);\n return;\n }\n\n if (!parsedDate) {\n setDateIsValid(false);\n return;\n }\n\n setDateIsValid(true);\n\n let hour = parsedDate.hour();\n\n // If the meridiem is set to am and the user enters a time greater than 12,\n // e.g. 18:00, it's a pretty clear indication they mean afternoon, so set the\n // meridiem to pm\n if (meridiem === 'am' && hour >= 12) {\n setMeridiem('pm');\n }\n // It's not as easy to infer that a user intended 8:00 to mean 08:00 when the meridiem\n // is set to pm, so don't change the meridiem in that case\n if (meridiem === 'pm' && hour < 12) {\n hour = parsedDate.hour() + 12;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(hour)\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(hour).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n },\n [date, dayjsDate, meridiem, setDate, shouldShowSeconds]\n );\n\n const handleMeridiemChange = useCallback(\n (newMeridiem: string) => {\n setMeridiem(newMeridiem as Meridiem);\n\n if (newMeridiem === 'pm' && dayjsDate.hour() < 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() + 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n\n if (newMeridiem === 'am' && dayjsDate.hour() >= 12) {\n const newDate = dayjsDate.hour(dayjsDate.hour() - 12).toDate();\n\n setDate(newDate);\n\n return;\n }\n },\n [dayjsDate, setDate]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n const { isValid, parsedDate } = parseTimeString(timeString);\n\n if (!isValid) {\n return;\n }\n\n if (!parsedDate) {\n return;\n }\n\n const newDate = shouldShowSeconds\n ? dayjsDate\n .hour(parsedDate.hour())\n .minute(parsedDate.minute())\n .second(parsedDate.second())\n .toDate()\n : dayjsDate.hour(parsedDate.hour()).minute(parsedDate.minute()).toDate();\n\n setDate(newDate);\n }\n },\n [dayjsDate, setDate, shouldShowSeconds, timeString]\n );\n\n return (\n <TimeInputContainer\n gap=\"sm\"\n padding=\"xs\"\n maxWidth={`${calendarFullWidth}`}\n orientation=\"horizontal\"\n justifyContent=\"end\"\n >\n <Container maxWidth=\"8%\">\n <Label htmlFor=\"date-time-picker-time-input\">Time</Label>\n </Container>\n <Container\n justifyContent=\"space-evenly\"\n orientation=\"horizontal\"\n maxWidth=\"85%\"\n >\n <Container\n maxWidth=\"45%\"\n orientation=\"horizontal\"\n >\n <TextField\n data-testid=\"date-time-picker-time-input\"\n disabled={!isEnabled}\n error={dateIsValid ? null : true}\n id=\"date-time-picker-time-input\"\n onChange={handleTimeChange}\n onKeyDown={handleKeyDown}\n value={timeString}\n />\n </Container>\n <Container maxWidth=\"45%\">\n <ButtonGroup\n onClick={handleMeridiemChange}\n options={[\n {\n label: 'am',\n value: 'am',\n },\n {\n label: 'pm',\n value: 'pm',\n },\n ]}\n selected={meridiem}\n type=\"default\"\n />\n </Container>\n </Container>\n </TimeInputContainer>\n );\n};\n\nexport type Tab = 'startDate' | 'endDate';\n\ninterface TabbedCalendarProps {\n defaultActiveTab?: Tab;\n endDate: Date | undefined;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setEndDate: SetDate;\n setSelectedDate: SetSelectedDate;\n setStartDate: SetDate;\n shouldShowSeconds: boolean;\n startDate: Date | undefined;\n timezone: Timezone;\n}\n\nconst TabbedCalendar = ({\n defaultActiveTab = 'startDate',\n endDate,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setEndDate,\n setSelectedDate,\n setStartDate,\n shouldShowSeconds,\n startDate,\n timezone,\n}: TabbedCalendarProps) => {\n const [activeTab, setActiveTab] = useState<Tab>(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabChange = useCallback((newTab: string) => {\n setActiveTab(newTab as Tab);\n }, []);\n\n const handleSetStartDate = useCallback(\n (startDate: Date) => {\n setStartDate(startDate);\n\n setSelectedDate(startDate, 'startDate');\n },\n [setSelectedDate, setStartDate]\n );\n\n const handleSetEndDate = useCallback(\n (endDate: Date) => {\n setEndDate(endDate);\n\n setSelectedDate(endDate, 'endDate');\n },\n [setEndDate, setSelectedDate]\n );\n\n const startDateCalendarOptions: UseCalendarOptions = {};\n const endDateCalendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (startDate) {\n startDateCalendarOptions.defaultDate = startDate;\n }\n\n // If an end date is selected, open the calendar to that date\n if (endDate) {\n endDateCalendarOptions.defaultDate = endDate;\n }\n\n const startDateIsAfterEndDate =\n startDate && endDate && !dateRangeIsValid({ startDate, endDate });\n\n return (\n <BottomPaddingTabs\n onValueChange={handleTabChange}\n value={activeTab}\n >\n <StyledTriggerList>\n <Tabs.Trigger\n value=\"startDate\"\n data-testid=\"tabbed-calendar-trigger-start\"\n >\n Start date\n </Tabs.Trigger>\n <Tabs.Trigger\n value=\"endDate\"\n data-testid=\"tabbed-calendar-trigger-end\"\n >\n End date\n </Tabs.Trigger>\n </StyledTriggerList>\n <Tabs.Content value=\"startDate\">\n <StyledCalendarRenderer\n calendarOptions={startDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"startDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={startDate}\n setDate={handleSetStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n <Tabs.Content value=\"endDate\">\n <StyledCalendarRenderer\n calendarOptions={endDateCalendarOptions}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n calendarBody={body}\n calendarType=\"endDate\"\n endDate={endDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={setSelectedDate}\n startDate={startDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n <TimeInput\n date={endDate}\n setDate={handleSetEndDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Tabs.Content>\n {startDateIsAfterEndDate && (\n <Text\n align=\"center\"\n color=\"danger\"\n fillWidth\n >\n End date and time must be after start\n </Text>\n )}\n </BottomPaddingTabs>\n );\n};\n\nexport interface DateTimeRangePickerProps {\n closeOnDateRangeSelected?: boolean;\n defaultActiveTab?: Tab;\n disabled?: boolean;\n endDate?: Date;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (\n startDate: Date,\n endDate: Date,\n predefinedDateLabel?: string\n ) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedTimesList?: DateRangeListItem[];\n maxRangeLength?: number;\n shouldFireIfInvalid?: boolean;\n shouldShowSeconds?: boolean;\n startDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePicker = ({\n closeOnDateRangeSelected = false,\n defaultActiveTab,\n disabled = false,\n endDate,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedTimesList,\n shouldFireIfInvalid = true,\n shouldShowSeconds,\n startDate,\n timezone = 'system',\n}: DateTimeRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const startDateCopy = new Date(startDate);\n\n const hours =\n timezone === 'UTC' ? startDateCopy.getUTCHours() : startDateCopy.getHours();\n\n if (hours === 0) {\n if (timezone === 'UTC') {\n startDateCopy.setUTCHours(12);\n } else {\n startDateCopy.setHours(12);\n }\n }\n\n setSelectedStartDate(startDateCopy);\n }, [startDate, timezone]);\n\n useEffect(() => {\n if (!endDate) {\n return;\n }\n\n const endDateCopy = new Date(endDate);\n\n const hours = timezone === 'UTC' ? endDateCopy.getUTCHours() : endDateCopy.getHours();\n if (hours === 0) {\n if (timezone === 'UTC') {\n endDateCopy.setUTCHours(12);\n } else {\n endDateCopy.setHours(12);\n }\n }\n\n setSelectedEndDate(endDateCopy);\n }, [endDate, timezone]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n const rect = calendarContainerRef.current.getBoundingClientRect();\n\n if (rect.right > window.innerWidth) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }, []);\n\n const handleOpenChange = useCallback((isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection('right');\n }\n }, []);\n\n const handleSelectDate = useCallback(\n (selectedDate: Date, calendarType: CalendarType): void => {\n const isMidnight =\n timezone === 'UTC'\n ? selectedDate.getUTCHours() === 0 &&\n selectedDate.getUTCMinutes() === 0 &&\n selectedDate.getUTCSeconds() === 0\n : selectedDate.getHours() === 0 &&\n selectedDate.getMinutes() === 0 &&\n selectedDate.getSeconds() === 0;\n\n if (isMidnight) {\n // set the time to 12 noon if time hasn't been set yet\n\n if (timezone === 'UTC') {\n selectedDate.setUTCHours(12);\n } else {\n selectedDate.setHours(12);\n }\n }\n\n if (calendarType === 'startDate') {\n setSelectedStartDate(selectedDate);\n\n if (selectedEndDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedDate, selectedEndDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n\n if (calendarType === 'endDate') {\n setSelectedEndDate(selectedDate);\n\n if (selectedStartDate) {\n if (\n !shouldFireIfInvalid &&\n !dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })\n ) {\n return;\n }\n\n onSelectDateRange(selectedStartDate, selectedDate);\n\n if (closeOnDateRangeSelected) {\n closeDatePicker();\n }\n }\n }\n },\n [\n closeDatePicker,\n closeOnDateRangeSelected,\n onSelectDateRange,\n selectedEndDate,\n selectedStartDate,\n shouldFireIfInvalid,\n timezone,\n ]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedTimes =\n predefinedTimesList !== undefined && predefinedTimesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateTimeRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n shouldShowSeconds={shouldShowSeconds}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <NoOverflowDropdownContent align=\"start\">\n <Container orientation=\"horizontal\">\n {shouldShowPredefinedTimes ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedTimes\n onSelectDateRange={onSelectDateRange}\n predefinedTimesList={predefinedTimesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n $openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <>\n <TabbedCalendar\n defaultActiveTab={defaultActiveTab}\n endDate={selectedEndDate}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setEndDate={setSelectedEndDate}\n setSelectedDate={handleSelectDate}\n setStartDate={setSelectedStartDate}\n shouldShowSeconds={Boolean(shouldShowSeconds)}\n startDate={selectedStartDate}\n timezone={timezone}\n />\n </>\n )}\n </Container>\n </NoOverflowDropdownContent>\n </Dropdown>\n );\n};\n"],"names":["calendarFullWidth","PredefinedCalendarContainer","styled","Panel","withConfig","componentId","theme","click","panel","color","background","muted","PredefinedTimesContainer","Container","CalendarRendererContainer","div","datePicker","dateOption","default","stroke","range","radii","$openDirection","NoOverflowDropdownContent","Dropdown","Content","StyledCalendarRenderer","CalendarRenderer","BottomPaddingTabs","Tabs","sizes","StyledTriggerList","TriggersList","ScrollableContainer","TimeInputContainer","DateRangeTableCell","DateTableCell","$shouldShowRangeIndicator","Calendar","calendarBody","calendarType","futureDatesDisabled","futureStartDatesDisabled","maxRangeLength","setSelectedDate","startDate","endDate","timezone","hoveredDate","setHoveredDate","useState","today","shiftToTimezone","Date","shiftedStart","undefined","shiftedEnd","handleMouseOut","value","map","key","weekKey","week","date","isCurrentMonth","dayKey","fullDate","isSelected","isSameDate","isCurrentDate","isBetweenStartAndEndDates","Boolean","isDisabled","datesAreWithinMaxRange","startDateSelectedAndIsSelectingEndDate","endDateSelectedAndIsSelectingStartDate","shouldShowRangeIndicator","handleMouseEnter","handleClick","originalFullDate","shiftFromTimezone","setUTCHours","getUTCHours","setUTCMinutes","getUTCMinutes","setUTCSeconds","getUTCSeconds","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","PredefinedTimes","onSelectDateRange","predefinedTimesList","selectedEndDate","selectedStartDate","setEndDate","setStartDate","shouldShowCustomRange","showCustomDateRange","handleCustomTimePeriodClick","event","preventDefault","dateRange","label","handleItemClick","rangeIsSelected","getTime","Icon","toISOString","parseTimeString","timeString","validTimeRegex","test","isValid","hours","minutes","seconds","split","hoursAsNumber","parseInt","Number","isNaN","parsedDate","dayjs","minutesAsNumber","secondsAsNumber","TimeInput","setDate","shouldShowSeconds","dayjsDate","utc","hour","minute","formattedDate","format","setTimeString","dateIsValid","setDateIsValid","meridiem","setMeridiem","isEnabled","useEffect","handleTimeChange","useCallback","newTimeString","trimmedTime","trim","newDate","second","toDate","handleMeridiemChange","newMeridiem","handleKeyDown","TabbedCalendar","defaultActiveTab","activeTab","setActiveTab","handleTabChange","newTab","handleSetStartDate","handleSetEndDate","startDateCalendarOptions","endDateCalendarOptions","defaultDate","startDateIsAfterEndDate","dateRangeIsValid","body","DateTimeRangePicker","closeOnDateRangeSelected","disabled","openDirection","placeholder","shouldFireIfInvalid","isOpen","setIsOpen","setSelectedStartDate","setSelectedEndDate","setShouldShowCustomRange","calendarOpenDirection","setCalendarOpenDirection","calendarContainerRef","useRef","startDateCopy","endDateCopy","useLayoutEffect","current","rect","getBoundingClientRect","right","window","innerWidth","closeDatePicker","handleOpenChange","handleSelectDate","selectedDate","isMidnight","onTriggerKeyDown","e","shouldShowPredefinedTimes","length"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import { CardHorizontalProps } from './CardHorizontal.types';
2
- export declare const CardHorizontal: ({ title, icon, description, disabled, infoText, infoUrl, isSelected, isSelectable, children, color, size, badgeText, badgeState, badgeIcon, badgeIconDir, onButtonClick, ...props }: CardHorizontalProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const CardHorizontal: ({ title, icon, description, disabled, infoText, infoUrl, isSelected, isSelectable, children, color, size, alignment, badgeText, badgeState, badgeIcon, badgeIconDir, onButtonClick, ...props }: CardHorizontalProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,6 +3,7 @@ import { IconName, ImageName } from '../Icon';
3
3
  import { BadgeState } from '../Badge';
4
4
  export type CardColor = 'default' | 'muted';
5
5
  export type CardSize = 'sm' | 'md';
6
+ export type CardAlignment = 'center' | 'top';
6
7
  export interface CardHorizontalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
7
8
  title?: ReactNode;
8
9
  icon?: ImageName;
@@ -21,4 +22,5 @@ export interface CardHorizontalProps extends Omit<HTMLAttributes<HTMLDivElement>
21
22
  badgeIconDir?: 'start' | 'end';
22
23
  onClick?: MouseEventHandler<HTMLDivElement>;
23
24
  onButtonClick?: MouseEventHandler<HTMLElement>;
25
+ alignment?: CardAlignment;
24
26
  }
@@ -1,2 +1,2 @@
1
1
  export { CardHorizontal } from './CardHorizontal';
2
- export type { CardSize, CardHorizontalProps } from './CardHorizontal.types';
2
+ export type { CardSize, CardAlignment, CardHorizontalProps, } from './CardHorizontal.types';
@@ -8,7 +8,7 @@ export interface DateTimeRangePickerProps {
8
8
  endDate?: Date;
9
9
  futureDatesDisabled?: boolean;
10
10
  futureStartDatesDisabled?: boolean;
11
- onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;
11
+ onSelectDateRange: (startDate: Date, endDate: Date, predefinedDateLabel?: string) => void;
12
12
  openDirection?: OpenDirection;
13
13
  placeholder?: string;
14
14
  predefinedTimesList?: DateRangeListItem[];
@@ -24,7 +24,7 @@ export { CardHorizontal } from './components/CardHorizontal';
24
24
  export { CardPrimary } from './components/CardPrimary';
25
25
  export { CardPromotion } from './components/CardPromotion';
26
26
  export { CardSecondary } from './components/CardSecondary';
27
- export type { CardHorizontalProps } from './components/CardHorizontal';
27
+ export type { CardHorizontalProps, CardAlignment } from './components/CardHorizontal';
28
28
  export type { CardPrimaryProps } from './components/CardPrimary';
29
29
  export type { CardPromotionProps } from './components/CardPromotion';
30
30
  export type { BadgeState, CardSecondaryProps } from './components/CardSecondary';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickhouse/click-ui",
3
- "version": "v0.3.0",
3
+ "version": "v0.4.0",
4
4
  "description": "Official ClickHouse design system react library",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",