@televet/kibble-ui 1.20.21-beta.cs29 → 1.20.21-beta.cs30
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.
- package/build/avatar.component-9757bebf.js.map +1 -1
- package/build/button.component-a7951562.js.map +1 -1
- package/build/components/DatePicker/index.js.map +1 -1
- package/build/components/Modal/index.js.map +1 -1
- package/build/components/RatingDots/index.js.map +1 -1
- package/build/components/TimeRange/index.js.map +1 -1
- package/build/components/Toast/index.js.map +1 -1
- package/build/formControl.component-1536d01f.js.map +1 -1
- package/build/heading.component-3fc3a84c.js.map +1 -1
- package/build/hooks/index.d.ts +0 -3
- package/build/hooks/index.js +1 -1
- package/build/icon.component-7619c611.js.map +1 -1
- package/build/index.js +1 -1
- package/build/link.component-a0944981.js.map +1 -1
- package/build/menuItem.component-a651abb2.js.map +1 -1
- package/build/notificationCounter.component-85086ee1.js.map +1 -1
- package/build/popover.component-b2c155a6.js.map +1 -1
- package/build/select.component-a09b2ea1.js.map +1 -1
- package/build/spinner.component-c07b76b0.js.map +1 -1
- package/build/text.component-46509ecd.js.map +1 -1
- package/build/textInput.component-a36afec1.js.map +1 -1
- package/build/theme/config/index.d.ts +2 -0
- package/build/theme/config/index.js +2 -0
- package/build/theme/config/index.js.map +1 -0
- package/build/theme/{theme.config.d.ts → config/theme.config.d.ts} +1 -1
- package/build/theme/index.d.ts +2 -3
- package/build/theme/index.js +1 -1
- package/build/theme/provider/index.d.ts +2 -0
- package/build/theme/provider/index.js +2 -0
- package/build/theme/provider/index.js.map +1 -0
- package/build/theme.config-da0757e8.js +2 -0
- package/build/theme.config-da0757e8.js.map +1 -0
- package/build/theme.provider-86b67da4.js +2 -0
- package/build/theme.provider-86b67da4.js.map +1 -0
- package/build/tooltip.component-4f2fab9e.js.map +1 -1
- package/package.json +1 -1
- package/build/theme.provider-37912ad0.js +0 -2
- package/build/theme.provider-37912ad0.js.map +0 -1
- package/build/useOverflowingText-b70de591.js +0 -2
- package/build/useOverflowingText-b70de591.js.map +0 -1
- /package/build/theme/{theme.provider.d.ts → provider/theme.provider.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.component-9757bebf.js","sources":["../src/components/Avatar/avatar.component.tsx"],"sourcesContent":["import { PlacementWithLogical } from '@chakra-ui/popper';\nimport { Avatar as CAvatar, AvatarProps as CAvatarProps } from '@chakra-ui/avatar';\nimport Box from 'chakra/components/Box';\nimport Icon from 'components/Icon';\nimport Tooltip from 'components/Tooltip';\nimport useTheme from 'hooks/useTheme
|
|
1
|
+
{"version":3,"file":"avatar.component-9757bebf.js","sources":["../src/components/Avatar/avatar.component.tsx"],"sourcesContent":["import { PlacementWithLogical } from '@chakra-ui/popper';\nimport { Avatar as CAvatar, AvatarProps as CAvatarProps } from '@chakra-ui/avatar';\nimport Box from 'chakra/components/Box';\nimport Icon from 'components/Icon';\nimport Tooltip from 'components/Tooltip';\nimport useTheme from 'hooks/useTheme';\nimport React, { CSSProperties, useState } from 'react';\nimport { AvatarSize, AvatarVariant } from './avatar.types';\nimport { getNextIconSize } from 'utils';\nimport AvatarBadge, { AvatarBadgeProps } from './components/AvatarBadge/avatarBadge.component';\nimport { IconName } from '../Icon/icon.types';\n\nexport interface AvatarProps extends CAvatarProps {\n name: string;\n size?: AvatarSize;\n isClinic?: boolean;\n showTooltip?: boolean;\n tooltipPlacement?: PlacementWithLogical;\n style?: CSSProperties;\n handleClick?: React.MouseEventHandler<HTMLSpanElement>;\n showRemoveButton?: boolean;\n handleRemoveButtonClick?: React.MouseEventHandler<HTMLDivElement>;\n variant?: AvatarVariant;\n iconName?: IconName;\n tooltipText?: string;\n showBadge?: boolean;\n badgeProps?: AvatarBadgeProps;\n}\n\nconst getAvatarVariant = (charCode: number): AvatarVariant => {\n if (charCode >= 65 && charCode <= 71) {\n return AvatarVariant.Blue;\n } else if (charCode >= 72 && charCode <= 77) {\n return AvatarVariant.Red;\n } else if (charCode >= 78 && charCode <= 84) {\n return AvatarVariant.Green;\n } else {\n return AvatarVariant.Comet;\n }\n};\n\nconst Avatar = ({\n name,\n src,\n isClinic = false,\n size = 'md',\n showTooltip = true,\n tooltipPlacement = 'bottom',\n style,\n handleClick,\n showRemoveButton,\n handleRemoveButtonClick,\n variant,\n iconName,\n tooltipText,\n showBadge,\n badgeProps,\n ...rest\n}: AvatarProps): JSX.Element => {\n const theme = useTheme();\n const [isSrcValid, setIsSrcValid] = useState(!!src);\n const [isHoveringAvatar, setIsHoveringAvatar] = useState(false);\n const [isHoveringRemoveButton, setIsHoveringRemoveButton] = useState(false);\n const shouldHideRemoveButton = size === 'xs' || variant === AvatarVariant.Dashed || variant === AvatarVariant.Number;\n let _variant = isClinic ? 'comet' : getAvatarVariant(name.charCodeAt(0));\n\n if (isSrcValid) {\n _variant = AvatarVariant.Image;\n }\n\n if (iconName) {\n _variant = AvatarVariant.Icon;\n }\n\n const avatarDynamicStyles: CSSProperties = {\n cursor: handleClick ? 'pointer' : 'auto',\n ...style,\n };\n\n const avatarMarkup = (\n <CAvatar\n {...rest}\n name={iconName ? '' : name}\n src={src}\n size={size}\n style={avatarDynamicStyles}\n variant={variant || _variant}\n {...(iconName && {\n icon: <Icon name={iconName} size={getNextIconSize(size, true, size === 'sm' || size === 'xs' ? 2 : 1)} />,\n })}\n icon={\n iconName && <Icon name={iconName} size={getNextIconSize(size, true, size === 'sm' || size === 'xs' ? 2 : 1)} />\n }\n onClick={handleClick}\n onError={(): void => setIsSrcValid(false)}\n onMouseEnter={(): void => setIsHoveringAvatar(true)}\n onMouseLeave={(): void => setIsHoveringAvatar(false)}\n >\n {showRemoveButton && isHoveringAvatar && !shouldHideRemoveButton && (\n <Box\n backgroundColor={theme.colors.white}\n borderRadius=\"9999px\"\n cursor=\"pointer\"\n position=\"absolute\"\n top=\"-4px\"\n right=\"-4px\"\n onClick={handleRemoveButtonClick}\n onMouseEnter={(): void => setIsHoveringRemoveButton(true)}\n onMouseLeave={(): void => setIsHoveringRemoveButton(false)}\n >\n <Icon name=\"closeCircle\" size={isHoveringRemoveButton ? 'sm' : 'xs'} colorToken=\"default\" />\n </Box>\n )}\n {showBadge && <AvatarBadge avatarSize={size} {...badgeProps} />}\n </CAvatar>\n );\n\n if (showTooltip) {\n return (\n <Tooltip label={tooltipText || name} placement={tooltipPlacement}>\n {avatarMarkup}\n </Tooltip>\n );\n }\n\n return avatarMarkup;\n};\n\nexport default Avatar;\n"],"names":["_a","charCode","name","src","_b","isClinic","_c","size","_d","showTooltip","_e","tooltipPlacement","style","handleClick","showRemoveButton","handleRemoveButtonClick","variant","iconName","tooltipText","showBadge","badgeProps","rest","__rest","theme","useTheme","_f","__read","useState","isSrcValid","setIsSrcValid","_g","isHoveringAvatar","setIsHoveringAvatar","_h","isHoveringRemoveButton","setIsHoveringRemoveButton","shouldHideRemoveButton","AvatarVariant","Dashed","Number","_variant","charCodeAt","Blue","Red","Green","Comet","Image","Icon","avatarDynamicStyles","__assign","cursor","avatarMarkup","React","CAvatar","icon","createElement","getNextIconSize","onClick","onError","onMouseEnter","onMouseLeave","Box","backgroundColor","colors","white","borderRadius","position","top","right","colorToken","AvatarBadge","avatarSize","Tooltip","label","placement"],"mappings":"8cAyCe,SAACA,GACd,IAbwBC,EAaxBC,EAAIF,EAAAE,KACJC,EAAGH,EAAAG,IACHC,EAAgBJ,EAAAK,SAAhBA,OAAQ,IAAAD,GAAQA,EAChBE,EAAWN,EAAAO,KAAXA,OAAI,IAAAD,EAAG,KAAIA,EACXE,EAAAR,EAAAS,YAAAA,OAAc,IAAAD,GAAIA,EAClBE,EAA2BV,EAAAW,iBAA3BA,OAAmB,IAAAD,EAAA,SAAQA,EAC3BE,EAAKZ,EAAAY,MACLC,EAAWb,EAAAa,YACXC,EAAgBd,EAAAc,iBAChBC,EAAuBf,EAAAe,wBACvBC,EAAOhB,EAAAgB,QACPC,EAAQjB,EAAAiB,SACRC,EAAWlB,EAAAkB,YACXC,EAASnB,EAAAmB,UACTC,EAAUpB,EAAAoB,WACPC,EAAIC,EAAAA,OAAAtB,EAhBO,kMAkBRuB,EAAQC,EAAAA,WACRC,EAAAC,EAAAA,OAA8BC,EAAAA,WAAWxB,GAAI,GAA5CyB,EAAUH,EAAA,GAAEI,OACbC,EAAAJ,EAAAA,OAA0CC,EAAQA,UAAC,GAAM,GAAxDI,EAAgBD,EAAA,GAAEE,OACnBC,EAAAP,EAAAA,OAAsDC,EAAQA,UAAC,GAAM,GAApEO,EAAsBD,EAAA,GAAEE,OACzBC,EAAkC,OAAT7B,GAAiBS,IAAYqB,EAAaA,cAACC,QAAUtB,IAAYqB,EAAaA,cAACE,OAC1GC,EAAWnC,EAAW,SAnCFJ,EAmC6BC,EAAKuC,WAAW,KAlCrD,IAAMxC,GAAY,GACzBoC,EAAAA,cAAcK,KACZzC,GAAY,IAAMA,GAAY,GAChCoC,EAAAA,cAAcM,IACZ1C,GAAY,IAAMA,GAAY,GAChCoC,EAAAA,cAAcO,MAEdP,EAAAA,cAAcQ,MA6BnBjB,IACFY,EAAWH,EAAaA,cAACS,OAGvB7B,IACFuB,EAAWH,EAAaA,cAACU,MAG3B,IAAMC,EACJC,EAAAA,SAAA,CAAAC,OAAQrC,EAAc,UAAY,QAC/BD,GAGCuC,EACJC,EAAAA,sBAACC,SAAOJ,EAAAA,SAAA,GACF5B,EACJ,CAAAnB,KAAMe,EAAW,GAAKf,EACtBC,IAAKA,EACLI,KAAMA,EACNK,MAAOoC,EACPhC,QAASA,GAAWwB,GACfvB,GAAY,CACfqC,KAAMF,EAAA,QAAAG,cAACR,EAAAA,KAAI,CAAC7C,KAAMe,EAAUV,KAAMiD,EAAeA,gBAACjD,GAAM,EAAe,OAATA,GAA0B,OAATA,EAAgB,EAAI,MAErG,CAAA+C,KACErC,GAAYmC,EAAC,QAAAG,cAAAR,OAAK,CAAA7C,KAAMe,EAAUV,KAAMiD,EAAeA,gBAACjD,GAAM,EAAe,OAATA,GAA0B,OAATA,EAAgB,EAAI,KAE3GkD,QAAS5C,EACT6C,QAAS,WAAY,OAAA7B,GAAc,IACnC8B,aAAc,WAAY,OAAA3B,GAAoB,IAC9C4B,aAAc,WAAY,OAAA5B,GAAoB,MAE7ClB,GAAoBiB,IAAqBK,GACxCgB,EAAA,QAAAG,cAACM,EAAG,QAAA,CACFC,gBAAiBvC,EAAMwC,OAAOC,MAC9BC,aAAa,SACbf,OAAO,UACPgB,SAAS,WACTC,IAAI,OACJC,MAAM,OACNX,QAAS1C,EACT4C,aAAc,WAAY,OAAAxB,GAA0B,IACpDyB,aAAc,WAAY,OAAAzB,GAA0B,KAEpDiB,EAAAA,QAACG,cAAAR,EAAAA,MAAK7C,KAAK,cAAcK,KAAM2B,EAAyB,KAAO,KAAMmC,WAAW,aAGnFlD,GAAaiC,EAAA,QAAAG,cAACe,EAAAA,YAAWrB,EAAAA,SAAA,CAACsB,WAAYhE,GAAUa,KAIrD,OAAIX,EAEA2C,UAACG,cAAAiB,EAAOA,QAAC,CAAAC,MAAOvD,GAAehB,EAAMwE,UAAW/D,GAC7CwC,GAKAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.component-a7951562.js","sources":["../src/components/Button/button.component.tsx"],"sourcesContent":["import React, { ForwardedRef, forwardRef, ReactNode } from 'react';\nimport { Button as CButton, ButtonProps as CButtonProps, IconButton } from '@chakra-ui/button';\nimport { useColorModeValue } from '@chakra-ui/color-mode';\nimport Icon from 'components/Icon';\nimport { IconsSize, IconName } from 'components/Icon/icon.types';\nimport { ButtonIconPosition, ButtonSizeType, ButtonVariantType } from './button.types';\nimport { camelCaseToLabel } from '../../utils';\nimport useTheme from 'hooks/useTheme
|
|
1
|
+
{"version":3,"file":"button.component-a7951562.js","sources":["../src/components/Button/button.component.tsx"],"sourcesContent":["import React, { ForwardedRef, forwardRef, ReactNode } from 'react';\nimport { Button as CButton, ButtonProps as CButtonProps, IconButton } from '@chakra-ui/button';\nimport { useColorModeValue } from '@chakra-ui/color-mode';\nimport Icon from 'components/Icon';\nimport { IconsSize, IconName } from 'components/Icon/icon.types';\nimport { ButtonIconPosition, ButtonSizeType, ButtonVariantType } from './button.types';\nimport { camelCaseToLabel } from '../../utils';\nimport useTheme from 'hooks/useTheme';\n\nexport interface ButtonProps extends CButtonProps {\n children?: ReactNode;\n variant?: ButtonVariantType;\n size?: ButtonSizeType;\n iconName?: IconName;\n iconSize?: IconsSize;\n iconPosition?: ButtonIconPosition;\n darkMode?: boolean;\n}\n\nconst Button = forwardRef((props: ButtonProps, ref: ForwardedRef<HTMLButtonElement>): JSX.Element => {\n const { components, fontWeights, radii } = useTheme();\n const { variant, light, dark } = components.Button[props.variant || 'primary'];\n\n const modeColor = props.darkMode ? dark : light;\n\n const bg = useColorModeValue(modeColor.default, dark.default);\n const color = useColorModeValue(modeColor.content, dark.content);\n const borderColor = useColorModeValue(modeColor.border, dark.border);\n\n const p = { ...props, variant, bg, color, borderColor };\n\n const hoverLight = p.isDisabled ? modeColor.default : modeColor.hover;\n const hoverDark = p.isDisabled ? dark.default : dark.hover;\n const hoverClass = {\n bg: useColorModeValue(hoverLight, hoverDark),\n };\n\n const activeLight = p.isDisabled ? modeColor.default : modeColor.active;\n const activeDark = p.isDisabled ? dark.default : dark.active;\n const activeClass = {\n bg: useColorModeValue(activeLight, activeDark),\n transform: `scale(${p.isDisabled ? '1' : '0.98'})`,\n };\n\n const { iconName, darkMode, iconPosition, ...domProps } = p;\n\n if (iconName) {\n const ButtonIcon = <Icon size={p.iconSize || p.size || 'md'} name={iconName} />;\n\n if (!domProps.children) {\n const label = camelCaseToLabel(iconName);\n return (\n <IconButton\n ref={ref}\n _hover={hoverClass}\n _active={activeClass}\n aria-label={label}\n icon={ButtonIcon}\n size={p.size || 'md'}\n {...domProps}\n />\n );\n } else {\n const position = iconPosition === 'right' ? 'rightIcon' : 'leftIcon';\n domProps[position] = ButtonIcon;\n }\n }\n\n return (\n <CButton\n fontWeight={fontWeights.semibold}\n cursor=\"pointer\"\n ref={ref}\n _hover={hoverClass}\n _active={activeClass}\n size={p.size || 'md'}\n iconSpacing={domProps.size === 'sm' || domProps.size === 'xs' ? '4px' : '8px'}\n borderRadius={radii.base}\n {...domProps}\n >\n {domProps.children}\n </CButton>\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["Button","forwardRef","props","ref","_a","useTheme","components","fontWeights","radii","_b","variant","light","dark","modeColor","darkMode","bg","useColorModeValue","default","color","content","borderColor","border","p","__assign","hoverLight","isDisabled","hover","hoverDark","hoverClass","activeLight","active","activeDark","activeClass","transform","concat","iconName","iconPosition","domProps","ButtonIcon","React","createElement","Icon","size","iconSize","name","children","label","camelCaseToLabel","IconButton","_hover","_active","icon","CButton","fontWeight","semibold","cursor","iconSpacing","borderRadius","base","displayName"],"mappings":"iXAmBMA,EAASC,EAAUA,YAAC,SAACC,EAAoBC,GACvC,IAAAC,EAAqCC,EAAAA,WAAnCC,EAAUF,EAAAE,WAAEC,EAAWH,EAAAG,YAAEC,EAAKJ,EAAAI,MAChCC,EAA2BH,EAAWN,OAAOE,EAAMQ,SAAW,WAA5DA,YAASC,UAAOC,SAElBC,EAAYX,EAAMY,SAAWF,EAAOD,EAEpCI,EAAKC,EAAAA,kBAAkBH,EAAUI,QAASL,EAAKK,SAC/CC,EAAQF,EAAAA,kBAAkBH,EAAUM,QAASP,EAAKO,SAClDC,EAAcJ,EAAAA,kBAAkBH,EAAUQ,OAAQT,EAAKS,QAEvDC,EAASC,EAAAA,SAAAA,EAAAA,SAAA,GAAArB,GAAO,CAAAQ,UAASK,GAAEA,EAAEG,MAAKA,EAAEE,YAAWA,IAE/CI,EAAaF,EAAEG,WAAaZ,EAAUI,QAAUJ,EAAUa,MAC1DC,EAAYL,EAAEG,WAAab,EAAKK,QAAUL,EAAKc,MAC/CE,EAAa,CACjBb,GAAIC,EAAAA,kBAAkBQ,EAAYG,IAG9BE,EAAcP,EAAEG,WAAaZ,EAAUI,QAAUJ,EAAUiB,OAC3DC,EAAaT,EAAEG,WAAab,EAAKK,QAAUL,EAAKkB,OAChDE,EAAc,CAClBjB,GAAIC,EAAAA,kBAAkBa,EAAaE,GACnCE,UAAW,SAAAC,OAASZ,EAAEG,WAAa,IAAM,OAAS,MAG5CU,EAAkDb,EAACa,SAADb,EAAhCR,SAAA,IAAEsB,EAA8Bd,eAAbe,WAAaf,EAApD,CAAiD,WAAA,WAAA,iBAEvD,GAAIa,EAAU,CACZ,IAAMG,EAAaC,EAAC,QAAAC,cAAAC,EAAIA,MAACC,KAAMpB,EAAEqB,UAAYrB,EAAEoB,MAAQ,KAAME,KAAMT,IAEnE,IAAKE,EAASQ,SAAU,CACtB,IAAMC,EAAQC,mBAAiBZ,GAC/B,OACEI,EAAA,QAAAC,cAACQ,EAAAA,WAAUzB,EAAAA,SAAA,CACTpB,IAAKA,EACL8C,OAAQrB,EACRsB,QAASlB,EAAW,aACRc,EACZK,KAAMb,EACNI,KAAMpB,EAAEoB,MAAQ,MACZL,IAKRA,EADkC,UAAjBD,EAA2B,YAAc,YACrCE,EAIzB,OACEC,EAAAA,QAAAC,cAACY,EAAOpD,OAAAuB,EAAAA,SAAA,CACN8B,WAAY9C,EAAY+C,SACxBC,OAAO,UACPpD,IAAKA,EACL8C,OAAQrB,EACRsB,QAASlB,EACTU,KAAMpB,EAAEoB,MAAQ,KAChBc,YAA+B,OAAlBnB,EAASK,MAAmC,OAAlBL,EAASK,KAAgB,MAAQ,MACxEe,aAAcjD,EAAMkD,MAChBrB,GAEHA,EAASQ,aAKhB7C,EAAO2D,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/DatePicker/components/Day/day.component.tsx","../../../src/components/DatePicker/components/Month/month.component.tsx","../../../node_modules/lodash/_baseRange.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/_isIterateeCall.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/toFinite.js","../../../node_modules/lodash/_createRange.js","../../../node_modules/lodash/range.js","../../../src/components/DatePicker/datepicker.records.ts","../../../src/components/DatePicker/datepicker.component.tsx"],"sourcesContent":["import React, { useRef, useContext } from 'react';\nimport { useDay } from '@datepicker-react/hooks';\nimport { DatePickerContext } from '../../context/datepicker.context';\nimport useTheme from 'hooks/useTheme/useTheme';\nimport Button from 'components/Button';\n\ninterface DayProps {\n dayLabel: string;\n date: Date;\n onDaySelected: () => void;\n}\n\nconst Day = ({ dayLabel, date, onDaySelected }: DayProps): JSX.Element => {\n const dayRef = useRef(null);\n const { fontWeights } = useTheme();\n\n const {\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateSelect,\n onDateFocus,\n onDateHover,\n } = useContext(DatePickerContext);\n\n const { disabledDate, onClick, onKeyDown, onMouseEnter, tabIndex, isSelectedStartOrEnd } = useDay({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef,\n });\n\n if (!dayLabel) {\n return <></>;\n }\n\n const onSelectDay = (): void => {\n onClick();\n onDaySelected();\n };\n\n return (\n <Button\n onClick={onSelectDay}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n tabIndex={tabIndex}\n type=\"button\"\n ref={dayRef}\n variant=\"ghostNeutral\"\n size=\"sm\"\n fontWeight={fontWeights.normal}\n isActive={isSelectedStartOrEnd}\n isDisabled={disabledDate}\n >\n {dayLabel}\n </Button>\n );\n};\n\nexport default Day;\n","import React, { useRef } from 'react';\nimport { FirstDayOfWeek, useMonth } from '@datepicker-react/hooks';\nimport Text from 'components/Text';\nimport Box from 'chakra/components/Box';\nimport Center from 'chakra/components/Center';\nimport Grid from 'chakra/components/Grid';\nimport GridItem from 'chakra/components/GridItem';\nimport Day from '../Day/day.component';\n\nexport interface MonthProps {\n year: number;\n month: number;\n firstDayOfWeek: FirstDayOfWeek;\n onDaySelected: () => void;\n}\n\nconst Month = ({ year, month, firstDayOfWeek, onDaySelected }: MonthProps): JSX.Element => {\n const ref = useRef<HTMLDivElement | null>(null);\n const { days, weekdayLabels } = useMonth({\n year,\n month,\n firstDayOfWeek,\n });\n\n return (\n <Box ref={ref}>\n <Grid templateColumns=\"repeat(7, 1fr)\" my={2}>\n {weekdayLabels.map((weekdayLabel: string) => (\n <GridItem key={weekdayLabel}>\n <Center>\n <Text size=\"xs\" variant=\"semibold\" colorToken=\"subtle\">\n {weekdayLabel}\n </Text>\n </Center>\n </GridItem>\n ))}\n </Grid>\n <Grid templateColumns=\"repeat(7, 1fr)\">\n {days.map((day, index) =>\n typeof day === 'object' ? (\n <Day key={day.date.toString()} date={day.date} dayLabel={day.dayLabel} onDaySelected={onDaySelected} />\n ) : (\n <div key={index} />\n ),\n )}\n </Grid>\n </Box>\n );\n};\n\nexport default Month;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import { IconsSize } from 'components/Icon/icon.types';\nimport { FormControlSize } from '../FormControl/formControl.types';\n\nexport const IconSizeMap: Record<FormControlSize, IconsSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n};\n\nexport const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n].map((month, index) => {\n return { label: month, value: String(index) };\n});\n","import React, { ChangeEvent, useEffect, useState } from 'react';\nimport { PlacementWithLogical } from '@chakra-ui/popper';\nimport { Popover, PopoverBody, PopoverContent, PopoverHeader, PopoverTrigger } from '@chakra-ui/popover';\nimport useDisclosure from 'chakra/hooks/useDisclosure';\nimport TextInput, { TextInputProps } from 'components/TextInput/textInput.component';\nimport Icon from '../Icon';\nimport DatePickerProvider from './context/datepicker.context';\nimport Grid from 'chakra/components/Grid';\nimport HStack from 'chakra/components/HStack';\nimport Box from 'chakra/components/Box';\nimport Center from 'chakra/components/Center';\nimport Flex from 'chakra/components/Flex';\nimport isDate from 'date-fns/isDate';\nimport format from 'date-fns/format';\nimport Month from './components/Month/month.component';\nimport { getInputValue, OnDatesChangeProps, parseDate, START_DATE, useDatepicker } from '@datepicker-react/hooks';\nimport Menu from 'components/Menu';\nimport { MenuItemProps } from 'components/Menu/components/MenuItem/menuItem.component';\nimport range from 'lodash/range';\nimport { DateFormats } from './datepicker.types';\nimport Button from '../Button';\nimport { IconSizeMap, months } from './datepicker.records';\n\nexport interface DatePickerProps {\n date: Date | null;\n onDateChange?: (date: Date | null) => void;\n dateFormat?: string | DateFormats;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n placement?: PlacementWithLogical;\n minYear?: number;\n maxYear?: number;\n}\n\n/**\n * A simple date picker component.\n *\n * Note: Be careful with dateFormat and allowing search (inputProps.IsReadOnly = false) as changing the format\n * can cause exceptions to be thrown.\n *\n * More dateFormat info: https://github.com/date-fns/date-fns/blob/main/docs/unicodeTokens.md\n */\nconst DatePicker = ({\n date,\n onDateChange,\n inputProps,\n placement,\n dateFormat = 'MM/dd/yyyy',\n minYear = 1990,\n maxYear = 2040,\n}: DatePickerProps): JSX.Element => {\n const [searchString, setSearchString] = useState<string | number | undefined>(getInputValue(date, dateFormat, ''));\n const [state, setState] = useState<OnDatesChangeProps>({\n startDate: date || null,\n endDate: date || null,\n focusedInput: START_DATE,\n });\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n\n const years = range(minYear, maxYear).map((year) => {\n const stringYear = String(year);\n return {\n label: stringYear,\n value: stringYear,\n };\n });\n\n const onDatesChange = (data: OnDatesChangeProps): void => {\n if (!data) {\n return;\n }\n\n if (!data.focusedInput) {\n setState({ ...data, focusedInput: START_DATE });\n } else {\n setState(data);\n }\n\n setSearchString(getInputValue(data.startDate, dateFormat, ''));\n\n if (onDateChange) {\n onDateChange(data.startDate);\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n setSearchString(dateValue);\n\n const parsedDate = parseDate(dateValue, dateFormat, new Date());\n\n if (dateValue.length === dateFormat.length && isDate(parsedDate)) {\n onDateSelect(parsedDate);\n setSearchString(getInputValue(parsedDate, dateFormat, ''));\n }\n };\n\n const {\n firstDayOfWeek,\n activeMonths,\n isDateSelected,\n isDateHovered,\n isFirstOrLastSelectedDate,\n isDateBlocked,\n isDateFocused,\n focusedDate,\n onDateHover,\n onDateSelect,\n onDateFocus,\n goToPreviousMonths,\n goToNextMonths,\n goToDate,\n } = useDatepicker({\n startDate: state.startDate,\n endDate: state.endDate,\n focusedInput: state.focusedInput,\n onDatesChange,\n numberOfMonths: 1,\n minBookingDays: 1,\n exactMinBookingDays: true,\n });\n\n const { onOpen, onClose, isOpen } = useDisclosure();\n\n // Prevent closing when using the month navigation buttons\n useEffect(() => {\n const handleClick = (event: MouseEvent): void => {\n if (calendarRef && !calendarRef?.current?.contains(event?.target as Node)) onClose();\n };\n document.addEventListener('mousedown', handleClick);\n\n return (): void => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [onClose, calendarRef]);\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && isOpen) {\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleMonthChange = (selectedItem: MenuItemProps): void => {\n const newDate = !date ? new Date() : date;\n newDate.setMonth(Number(selectedItem.value));\n goToDate(newDate);\n };\n\n const handleYearChange = (selectedItem: MenuItemProps): void => {\n const newDate = !date ? new Date() : date;\n newDate.setFullYear(Number(selectedItem.value));\n goToDate(newDate);\n };\n\n const handleOpen = (): void => {\n if (!inputProps?.isDisabled) {\n onOpen();\n }\n };\n\n const getMonthName = (month: number): string => {\n const date = new Date();\n date.setMonth(month);\n return format(date, 'LLLL');\n };\n\n const iconSize = inputProps?.size ? IconSizeMap[inputProps.size] : 'md';\n\n return (\n <DatePickerProvider\n focusedDate={focusedDate}\n isDateFocused={isDateFocused}\n isDateSelected={isDateSelected}\n isDateHovered={isDateHovered}\n isDateBlocked={isDateBlocked}\n isFirstOrLastSelectedDate={isFirstOrLastSelectedDate}\n onDateSelect={onDateSelect}\n onDateFocus={onDateFocus}\n onDateHover={onDateHover}\n >\n <Popover isOpen={isOpen} onClose={onClose} onOpen={handleOpen} initialFocusRef={inputRef} placement={placement}>\n <PopoverTrigger>\n <Box>\n <TextInput\n rightElement={\n <Flex cursor={inputProps?.isDisabled ? 'not-allowed' : 'pointer'}>\n <Icon name=\"chevronDown\" size={iconSize} />\n </Flex>\n }\n value={searchString}\n onChange={onInputChange}\n inputRef={inputRef}\n onKeyDown={onKeyDown}\n cursor={!!inputProps?.isReadOnly ? 'pointer' : 'text'}\n {...inputProps}\n />\n </Box>\n </PopoverTrigger>\n <PopoverContent ref={calendarRef} shadow=\"md\">\n <PopoverHeader justifyItems=\"space-between\">\n <HStack w=\"100%\" justify=\"space-between\">\n <Button iconName=\"chevronLeft\" onClick={goToPreviousMonths} variant=\"ghostNeutral\" size=\"sm\" />\n {activeMonths.map((activeMonth) => (\n <Center key={activeMonth.month} gap={2} h=\"100%\">\n <Menu\n buttonProps={{\n variant: 'tertiary',\n text: getMonthName(activeMonth.month),\n size: 'sm',\n }}\n listProps={{\n menuItems: months,\n onSelect: handleMonthChange,\n }}\n />\n <Menu\n buttonProps={{\n variant: 'tertiary',\n text: String(activeMonth.year),\n size: 'sm',\n }}\n listProps={{\n menuItems: years,\n onSelect: handleYearChange,\n }}\n />\n </Center>\n ))}\n <Button iconName=\"chevronRight\" onClick={goToNextMonths} variant=\"ghostNeutral\" size=\"sm\" />\n </HStack>\n </PopoverHeader>\n <PopoverBody>\n <Grid gap=\"0 64px\" templateColumns={`repeat(${activeMonths.length})`}>\n {activeMonths.map((month) => (\n <Month\n key={`${month.year}-${month.month}`}\n year={month.year}\n month={month.month}\n firstDayOfWeek={firstDayOfWeek}\n onDaySelected={(): void => onClose()}\n />\n ))}\n </Grid>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n </DatePickerProvider>\n );\n};\n\nexport default DatePicker;\n"],"names":["Day","_a","dayLabel","date","onDaySelected","dayRef","useRef","fontWeights","useTheme","_b","useContext","DatePickerContext","focusedDate","isDateFocused","isDateSelected","isDateHovered","isDateBlocked","isFirstOrLastSelectedDate","onDateSelect","onDateFocus","onDateHover","_c","useDay","disabledDate","onClick","onKeyDown","onMouseEnter","tabIndex","isSelectedStartOrEnd","React","createElement","Button","type","ref","variant","size","fontWeight","normal","isActive","isDisabled","Month","year","month","firstDayOfWeek","useMonth","days","weekdayLabels","Box","Grid","templateColumns","my","map","weekdayLabel","GridItem","key","Center","Text","colorToken","day","index","toString","nativeCeil","Math","ceil","nativeMax","max","_baseRange","start","end","step","fromRight","length","result","Array","eq_1","value","other","isObject_1","baseGetTag","require$$0","_baseGetTag","isObject","require$$1","isFunction","tag","isLength","reIsUint","eq","isArrayLike","isIndex","test","require$$3","_isIterateeCall","object","reWhitespace","_trimmedEndIndex","string","charAt","trimmedEndIndex","reTrimStart","_baseTrim","slice","replace","isObjectLike_1","isObjectLike","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber","valueOf","isBinary","baseRange","isIterateeCall","toFinite","range_1","undefined","createRange","IconSizeMap","xs","sm","md","lg","months","label","String","onDateChange","inputProps","placement","dateFormat","minYear","_d","maxYear","_e","__read","useState","getInputValue","Ue","searchString","setSearchString","_f","startDate","endDate","focusedInput","START_DATE","Pe","state","setState","inputRef","calendarRef","years","range","stringYear","_g","useDatepicker","onDatesChange","data","numberOfMonths","minBookingDays","exactMinBookingDays","activeMonths","goToPreviousMonths","goToNextMonths","goToDate","_h","useDisclosure","onOpen","onClose","isOpen","useEffect","handleClick","event","current","contains","target","document","addEventListener","removeEventListener","handleMonthChange","selectedItem","newDate","Date","setMonth","Number","handleYearChange","setFullYear","getMonthName","format","iconSize","DatePickerProvider","Popover","initialFocusRef","PopoverTrigger","TextInput","__assign","rightElement","Flex","cursor","Icon","name","onChange","e","dateValue","parsedDate","parseDate","isDate","preventDefault","stopPropagation","isReadOnly","PopoverContent","shadow","PopoverHeader","justifyItems","HStack","w","justify","iconName","activeMonth","gap","h","Menu","buttonProps","text","listProps","menuItems","onSelect","PopoverBody","concat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/DatePicker/components/Day/day.component.tsx","../../../src/components/DatePicker/components/Month/month.component.tsx","../../../node_modules/lodash/_baseRange.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/_isIterateeCall.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/toFinite.js","../../../node_modules/lodash/_createRange.js","../../../node_modules/lodash/range.js","../../../src/components/DatePicker/datepicker.records.ts","../../../src/components/DatePicker/datepicker.component.tsx"],"sourcesContent":["import React, { useRef, useContext } from 'react';\nimport { useDay } from '@datepicker-react/hooks';\nimport { DatePickerContext } from '../../context/datepicker.context';\nimport useTheme from 'hooks/useTheme';\nimport Button from 'components/Button';\n\ninterface DayProps {\n dayLabel: string;\n date: Date;\n onDaySelected: () => void;\n}\n\nconst Day = ({ dayLabel, date, onDaySelected }: DayProps): JSX.Element => {\n const dayRef = useRef(null);\n const { fontWeights } = useTheme();\n\n const {\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateSelect,\n onDateFocus,\n onDateHover,\n } = useContext(DatePickerContext);\n\n const { disabledDate, onClick, onKeyDown, onMouseEnter, tabIndex, isSelectedStartOrEnd } = useDay({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef,\n });\n\n if (!dayLabel) {\n return <></>;\n }\n\n const onSelectDay = (): void => {\n onClick();\n onDaySelected();\n };\n\n return (\n <Button\n onClick={onSelectDay}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n tabIndex={tabIndex}\n type=\"button\"\n ref={dayRef}\n variant=\"ghostNeutral\"\n size=\"sm\"\n fontWeight={fontWeights.normal}\n isActive={isSelectedStartOrEnd}\n isDisabled={disabledDate}\n >\n {dayLabel}\n </Button>\n );\n};\n\nexport default Day;\n","import React, { useRef } from 'react';\nimport { FirstDayOfWeek, useMonth } from '@datepicker-react/hooks';\nimport Text from 'components/Text';\nimport Box from 'chakra/components/Box';\nimport Center from 'chakra/components/Center';\nimport Grid from 'chakra/components/Grid';\nimport GridItem from 'chakra/components/GridItem';\nimport Day from '../Day/day.component';\n\nexport interface MonthProps {\n year: number;\n month: number;\n firstDayOfWeek: FirstDayOfWeek;\n onDaySelected: () => void;\n}\n\nconst Month = ({ year, month, firstDayOfWeek, onDaySelected }: MonthProps): JSX.Element => {\n const ref = useRef<HTMLDivElement | null>(null);\n const { days, weekdayLabels } = useMonth({\n year,\n month,\n firstDayOfWeek,\n });\n\n return (\n <Box ref={ref}>\n <Grid templateColumns=\"repeat(7, 1fr)\" my={2}>\n {weekdayLabels.map((weekdayLabel: string) => (\n <GridItem key={weekdayLabel}>\n <Center>\n <Text size=\"xs\" variant=\"semibold\" colorToken=\"subtle\">\n {weekdayLabel}\n </Text>\n </Center>\n </GridItem>\n ))}\n </Grid>\n <Grid templateColumns=\"repeat(7, 1fr)\">\n {days.map((day, index) =>\n typeof day === 'object' ? (\n <Day key={day.date.toString()} date={day.date} dayLabel={day.dayLabel} onDaySelected={onDaySelected} />\n ) : (\n <div key={index} />\n ),\n )}\n </Grid>\n </Box>\n );\n};\n\nexport default Month;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import { IconsSize } from 'components/Icon/icon.types';\nimport { FormControlSize } from '../FormControl/formControl.types';\n\nexport const IconSizeMap: Record<FormControlSize, IconsSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n};\n\nexport const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n].map((month, index) => {\n return { label: month, value: String(index) };\n});\n","import React, { ChangeEvent, useEffect, useState } from 'react';\nimport { PlacementWithLogical } from '@chakra-ui/popper';\nimport { Popover, PopoverBody, PopoverContent, PopoverHeader, PopoverTrigger } from '@chakra-ui/popover';\nimport useDisclosure from 'chakra/hooks/useDisclosure';\nimport TextInput, { TextInputProps } from 'components/TextInput/textInput.component';\nimport Icon from '../Icon';\nimport DatePickerProvider from './context/datepicker.context';\nimport Grid from 'chakra/components/Grid';\nimport HStack from 'chakra/components/HStack';\nimport Box from 'chakra/components/Box';\nimport Center from 'chakra/components/Center';\nimport Flex from 'chakra/components/Flex';\nimport isDate from 'date-fns/isDate';\nimport format from 'date-fns/format';\nimport Month from './components/Month/month.component';\nimport { getInputValue, OnDatesChangeProps, parseDate, START_DATE, useDatepicker } from '@datepicker-react/hooks';\nimport Menu from 'components/Menu';\nimport { MenuItemProps } from 'components/Menu/components/MenuItem/menuItem.component';\nimport range from 'lodash/range';\nimport { DateFormats } from './datepicker.types';\nimport Button from '../Button';\nimport { IconSizeMap, months } from './datepicker.records';\n\nexport interface DatePickerProps {\n date: Date | null;\n onDateChange?: (date: Date | null) => void;\n dateFormat?: string | DateFormats;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n placement?: PlacementWithLogical;\n minYear?: number;\n maxYear?: number;\n}\n\n/**\n * A simple date picker component.\n *\n * Note: Be careful with dateFormat and allowing search (inputProps.IsReadOnly = false) as changing the format\n * can cause exceptions to be thrown.\n *\n * More dateFormat info: https://github.com/date-fns/date-fns/blob/main/docs/unicodeTokens.md\n */\nconst DatePicker = ({\n date,\n onDateChange,\n inputProps,\n placement,\n dateFormat = 'MM/dd/yyyy',\n minYear = 1990,\n maxYear = 2040,\n}: DatePickerProps): JSX.Element => {\n const [searchString, setSearchString] = useState<string | number | undefined>(getInputValue(date, dateFormat, ''));\n const [state, setState] = useState<OnDatesChangeProps>({\n startDate: date || null,\n endDate: date || null,\n focusedInput: START_DATE,\n });\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n\n const years = range(minYear, maxYear).map((year) => {\n const stringYear = String(year);\n return {\n label: stringYear,\n value: stringYear,\n };\n });\n\n const onDatesChange = (data: OnDatesChangeProps): void => {\n if (!data) {\n return;\n }\n\n if (!data.focusedInput) {\n setState({ ...data, focusedInput: START_DATE });\n } else {\n setState(data);\n }\n\n setSearchString(getInputValue(data.startDate, dateFormat, ''));\n\n if (onDateChange) {\n onDateChange(data.startDate);\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n setSearchString(dateValue);\n\n const parsedDate = parseDate(dateValue, dateFormat, new Date());\n\n if (dateValue.length === dateFormat.length && isDate(parsedDate)) {\n onDateSelect(parsedDate);\n setSearchString(getInputValue(parsedDate, dateFormat, ''));\n }\n };\n\n const {\n firstDayOfWeek,\n activeMonths,\n isDateSelected,\n isDateHovered,\n isFirstOrLastSelectedDate,\n isDateBlocked,\n isDateFocused,\n focusedDate,\n onDateHover,\n onDateSelect,\n onDateFocus,\n goToPreviousMonths,\n goToNextMonths,\n goToDate,\n } = useDatepicker({\n startDate: state.startDate,\n endDate: state.endDate,\n focusedInput: state.focusedInput,\n onDatesChange,\n numberOfMonths: 1,\n minBookingDays: 1,\n exactMinBookingDays: true,\n });\n\n const { onOpen, onClose, isOpen } = useDisclosure();\n\n // Prevent closing when using the month navigation buttons\n useEffect(() => {\n const handleClick = (event: MouseEvent): void => {\n if (calendarRef && !calendarRef?.current?.contains(event?.target as Node)) onClose();\n };\n document.addEventListener('mousedown', handleClick);\n\n return (): void => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [onClose, calendarRef]);\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && isOpen) {\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleMonthChange = (selectedItem: MenuItemProps): void => {\n const newDate = !date ? new Date() : date;\n newDate.setMonth(Number(selectedItem.value));\n goToDate(newDate);\n };\n\n const handleYearChange = (selectedItem: MenuItemProps): void => {\n const newDate = !date ? new Date() : date;\n newDate.setFullYear(Number(selectedItem.value));\n goToDate(newDate);\n };\n\n const handleOpen = (): void => {\n if (!inputProps?.isDisabled) {\n onOpen();\n }\n };\n\n const getMonthName = (month: number): string => {\n const date = new Date();\n date.setMonth(month);\n return format(date, 'LLLL');\n };\n\n const iconSize = inputProps?.size ? IconSizeMap[inputProps.size] : 'md';\n\n return (\n <DatePickerProvider\n focusedDate={focusedDate}\n isDateFocused={isDateFocused}\n isDateSelected={isDateSelected}\n isDateHovered={isDateHovered}\n isDateBlocked={isDateBlocked}\n isFirstOrLastSelectedDate={isFirstOrLastSelectedDate}\n onDateSelect={onDateSelect}\n onDateFocus={onDateFocus}\n onDateHover={onDateHover}\n >\n <Popover isOpen={isOpen} onClose={onClose} onOpen={handleOpen} initialFocusRef={inputRef} placement={placement}>\n <PopoverTrigger>\n <Box>\n <TextInput\n rightElement={\n <Flex cursor={inputProps?.isDisabled ? 'not-allowed' : 'pointer'}>\n <Icon name=\"chevronDown\" size={iconSize} />\n </Flex>\n }\n value={searchString}\n onChange={onInputChange}\n inputRef={inputRef}\n onKeyDown={onKeyDown}\n cursor={!!inputProps?.isReadOnly ? 'pointer' : 'text'}\n {...inputProps}\n />\n </Box>\n </PopoverTrigger>\n <PopoverContent ref={calendarRef} shadow=\"md\">\n <PopoverHeader justifyItems=\"space-between\">\n <HStack w=\"100%\" justify=\"space-between\">\n <Button iconName=\"chevronLeft\" onClick={goToPreviousMonths} variant=\"ghostNeutral\" size=\"sm\" />\n {activeMonths.map((activeMonth) => (\n <Center key={activeMonth.month} gap={2} h=\"100%\">\n <Menu\n buttonProps={{\n variant: 'tertiary',\n text: getMonthName(activeMonth.month),\n size: 'sm',\n }}\n listProps={{\n menuItems: months,\n onSelect: handleMonthChange,\n }}\n />\n <Menu\n buttonProps={{\n variant: 'tertiary',\n text: String(activeMonth.year),\n size: 'sm',\n }}\n listProps={{\n menuItems: years,\n onSelect: handleYearChange,\n }}\n />\n </Center>\n ))}\n <Button iconName=\"chevronRight\" onClick={goToNextMonths} variant=\"ghostNeutral\" size=\"sm\" />\n </HStack>\n </PopoverHeader>\n <PopoverBody>\n <Grid gap=\"0 64px\" templateColumns={`repeat(${activeMonths.length})`}>\n {activeMonths.map((month) => (\n <Month\n key={`${month.year}-${month.month}`}\n year={month.year}\n month={month.month}\n firstDayOfWeek={firstDayOfWeek}\n onDaySelected={(): void => onClose()}\n />\n ))}\n </Grid>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n </DatePickerProvider>\n );\n};\n\nexport default DatePicker;\n"],"names":["Day","_a","dayLabel","date","onDaySelected","dayRef","useRef","fontWeights","useTheme","_b","useContext","DatePickerContext","focusedDate","isDateFocused","isDateSelected","isDateHovered","isDateBlocked","isFirstOrLastSelectedDate","onDateSelect","onDateFocus","onDateHover","_c","useDay","disabledDate","onClick","onKeyDown","onMouseEnter","tabIndex","isSelectedStartOrEnd","React","createElement","Button","type","ref","variant","size","fontWeight","normal","isActive","isDisabled","Month","year","month","firstDayOfWeek","useMonth","days","weekdayLabels","Box","Grid","templateColumns","my","map","weekdayLabel","GridItem","key","Center","Text","colorToken","day","index","toString","nativeCeil","Math","ceil","nativeMax","max","_baseRange","start","end","step","fromRight","length","result","Array","eq_1","value","other","isObject_1","baseGetTag","require$$0","_baseGetTag","isObject","require$$1","isFunction","tag","isLength","reIsUint","eq","isArrayLike","isIndex","test","require$$3","_isIterateeCall","object","reWhitespace","_trimmedEndIndex","string","charAt","trimmedEndIndex","reTrimStart","_baseTrim","slice","replace","isObjectLike_1","isObjectLike","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber","valueOf","isBinary","baseRange","isIterateeCall","toFinite","range_1","undefined","createRange","IconSizeMap","xs","sm","md","lg","months","label","String","onDateChange","inputProps","placement","dateFormat","minYear","_d","maxYear","_e","__read","useState","getInputValue","Ue","searchString","setSearchString","_f","startDate","endDate","focusedInput","START_DATE","Pe","state","setState","inputRef","calendarRef","years","range","stringYear","_g","useDatepicker","onDatesChange","data","numberOfMonths","minBookingDays","exactMinBookingDays","activeMonths","goToPreviousMonths","goToNextMonths","goToDate","_h","useDisclosure","onOpen","onClose","isOpen","useEffect","handleClick","event","current","contains","target","document","addEventListener","removeEventListener","handleMonthChange","selectedItem","newDate","Date","setMonth","Number","handleYearChange","setFullYear","getMonthName","format","iconSize","DatePickerProvider","Popover","initialFocusRef","PopoverTrigger","TextInput","__assign","rightElement","Flex","cursor","Icon","name","onChange","e","dateValue","parsedDate","parseDate","isDate","preventDefault","stopPropagation","isReadOnly","PopoverContent","shadow","PopoverHeader","justifyItems","HStack","w","justify","iconName","activeMonth","gap","h","Menu","buttonProps","text","listProps","menuItems","onSelect","PopoverBody","concat"],"mappings":"snFAYMA,EAAM,SAACC,GAAE,IAAAC,aAAUC,EAAIF,EAAAE,KAAEC,EAAaH,EAAAG,cACpCC,EAASC,SAAO,MACdC,EAAgBC,yBAElBC,EAUFC,EAAAA,WAAWC,EAAAA,mBATbC,EAAWH,EAAAG,YACXC,EAAaJ,EAAAI,cACbC,mBACAC,EAAaN,EAAAM,cACbC,EAAaP,EAAAO,cACbC,8BACAC,EAAYT,EAAAS,aACZC,EAAWV,EAAAU,YACXC,gBAGIC,EAAqFC,EAAAA,GAAO,CAChGnB,KAAIA,EACJS,YAAWA,EACXC,cAAaA,EACbC,eAAcA,EACdC,cAAaA,EACbC,cAAaA,EACbC,0BAAyBA,EACzBE,YAAWA,EACXD,aAAYA,EACZE,YAAWA,EACXf,OAAMA,IAXAkB,EAAYF,EAAAE,aAAEC,EAAOH,EAAAG,QAAEC,EAASJ,EAAAI,UAAEC,iBAAcC,aAAUC,yBAclE,IAAK1B,EACH,OAAO2B,iDAQT,OACEA,EAAC,QAAAC,cAAAC,EAAMA,OACL,CAAAP,QAPgB,WAClBA,IACApB,KAMEqB,UAAWA,EACXC,aAAcA,EACdC,SAAUA,EACVK,KAAK,SACLC,IAAK5B,EACL6B,QAAQ,eACRC,KAAK,KACLC,WAAY7B,EAAY8B,OACxBC,SAAUV,EACVW,WAAYhB,GAEXrB,ICjDDsC,EAAQ,SAACvC,OAAEwC,EAAIxC,EAAAwC,KAAEC,EAAKzC,EAAAyC,MAAEC,EAAc1C,EAAA0C,eAAEvC,EAAaH,EAAAG,cACnD6B,EAAM3B,SAA8B,MACpCG,EAA0BmC,EAAAA,GAAS,CACvCH,KAAIA,EACJC,MAAKA,EACLC,eAAcA,IAHRE,EAAIpC,EAAAoC,KAAEC,kBAMd,OACEjB,EAAC,QAAAC,cAAAiB,EAAG,QAAC,CAAAd,IAAKA,GACRJ,EAAC,QAAAC,cAAAkB,UAAK,CAAAC,gBAAgB,iBAAiBC,GAAI,GACxCJ,EAAcK,KAAI,SAACC,GAAyB,OAC3CvB,wBAACwB,UAAQ,CAACC,IAAKF,GACbvB,UAAAC,cAACyB,EAAAA,QAAM,KACL1B,EAAAA,QAACC,cAAA0B,EAAAA,MAAKrB,KAAK,KAAKD,QAAQ,WAAWuB,WAAW,UAC3CL,SAMXvB,EAAAA,QAAAC,cAACkB,UAAI,CAACC,gBAAgB,kBACnBJ,EAAKM,KAAI,SAACO,EAAKC,GACd,MAAe,iBAARD,EACL7B,EAAC,QAAAC,cAAA9B,GAAIsD,IAAKI,EAAIvD,KAAKyD,WAAYzD,KAAMuD,EAAIvD,KAAMD,SAAUwD,EAAIxD,SAAUE,cAAeA,IAEtFyB,+BAAKyB,IAAKK,UCzClBE,EAAaC,KAAKC,KAClBC,EAAYF,KAAKG,IAyBrB,IAAAC,EAZA,SAAmBC,EAAOC,EAAKC,EAAMC,GAKnC,IAJA,IAAIX,GAAS,EACTY,EAASP,EAAUH,GAAYO,EAAMD,IAAUE,GAAQ,IAAK,GAC5DG,EAASC,MAAMF,GAEZA,KACLC,EAAOF,EAAYC,IAAWZ,GAASQ,EACvCA,GAASE,EAEX,OAAOG,GCYT,IAAAE,EAJA,SAAYC,EAAOC,GACjB,OAAOD,IAAUC,GAAUD,GAAUA,GAASC,GAAUA,GCH1D,IAAAC,EALA,SAAkBF,GAChB,IAAI3C,SAAc2C,EAClB,OAAgB,MAATA,IAA0B,UAAR3C,GAA4B,YAARA,IC3B3C8C,EAAaC,EAAwBC,YACrCC,EAAWC,ECiCf,IClCIC,EF0BJ,SAAoBR,GAClB,IAAKM,EAASN,GACZ,OAAO,EAIT,IAAIS,EAAMN,EAAWH,GACrB,MA5BY,qBA4BLS,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,GEhC3DC,ED4BJ,SAAkBV,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,kBC+BvB,IC5BIW,EAAW,mBAoBf,ICxBIC,EAAKR,EACLS,EF2BJ,SAAqBb,GACnB,OAAgB,MAATA,GAAiBU,EAASV,EAAMJ,UAAYY,EAAWR,IE3B5Dc,EDYJ,SAAiBd,EAAOJ,GACtB,IAAIvC,SAAc2C,EAGlB,SAFAJ,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARvC,GACU,UAARA,GAAoBsD,EAASI,KAAKf,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQJ,GClB7CU,EAAWU,EA0Bf,IAAAC,EAdA,SAAwBjB,EAAOhB,EAAOkC,GACpC,IAAKZ,EAASY,GACZ,OAAO,EAET,IAAI7D,SAAc2B,EAClB,SAAY,UAAR3B,EACKwD,EAAYK,IAAWJ,EAAQ9B,EAAOkC,EAAOtB,QACrC,UAARvC,GAAoB2B,KAASkC,IAE7BN,EAAGM,EAAOlC,GAAQgB,ICvBzBmB,EAAe,KAiBnB,IAAAC,EAPA,SAAyBC,GAGvB,IAFA,IAAIrC,EAAQqC,EAAOzB,OAEZZ,KAAWmC,EAAaJ,KAAKM,EAAOC,OAAOtC,MAClD,OAAOA,GCfLuC,EAAkBnB,EAGlBoB,EAAc,OAelB,IAAAC,EANA,SAAkBJ,GAChB,OAAOA,EACHA,EAAOK,MAAM,EAAGH,EAAgBF,GAAU,GAAGM,QAAQH,EAAa,IAClEH,GCaN,IAAAO,EAJA,SAAsB5B,GACpB,OAAgB,MAATA,GAAiC,iBAATA,GCzB7BG,EAAaC,EAAwBC,YACrCwB,EAAetB,EA2BnB,IC5BIuB,EAAW1B,EACXE,EAAWC,EACXwB,EDqBJ,SAAkB/B,GAChB,MAAuB,iBAATA,GACX6B,EAAa7B,IArBF,mBAqBYG,EAAWH,ICjBnCgC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnB,IC/DIC,ED0CJ,SAAkBrC,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+B,EAAS/B,GACX,OA1CM,IA4CR,GAAIM,EAASN,GAAQ,CACnB,IAAIC,EAAgC,mBAAjBD,EAAMsC,QAAwBtC,EAAMsC,UAAYtC,EACnEA,EAAQM,EAASL,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATD,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ8B,EAAS9B,GACjB,IAAIuC,EAAWN,EAAWlB,KAAKf,GAC/B,OAAQuC,GAAYL,EAAUnB,KAAKf,GAC/BmC,EAAanC,EAAM0B,MAAM,GAAIa,EAAW,EAAI,GAC3CP,EAAWjB,KAAKf,GAvDb,KAuD6BA,GCnBvC,ICzCIwC,GAAYpC,EACZqC,GAAiBlC,EACjBmC,GD2BJ,SAAkB1C,GAChB,OAAKA,EA3BQ,YA8BbA,EAAQqC,EAASrC,MA9BJ,WA+BaA,EA9BV,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,GCFjC,ICgBA2C,GDlCA,SAAqBhD,GACnB,OAAO,SAASH,EAAOC,EAAKC,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB+C,GAAejD,EAAOC,EAAKC,KAChED,EAAMC,OAAOkD,GAGfpD,EAAQkD,GAASlD,QACLoD,IAARnD,GACFA,EAAMD,EACNA,EAAQ,GAERC,EAAMiD,GAASjD,GAEjBC,OAAgBkD,IAATlD,EAAsBF,EAAQC,EAAM,GAAK,EAAKiD,GAAShD,GACvD8C,GAAUhD,EAAOC,EAAKC,EAAMC,ICkB3BkD,GCxCCC,GAAkD,CAC7DC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGOC,GAAS,CACpB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YACA3E,KAAI,SAACT,EAAOiB,GACZ,MAAO,CAAEoE,MAAOrF,EAAOiC,MAAOqD,OAAOrE,uBCiBpB,SAAC1D,GAClB,IAAAE,EAAIF,EAAAE,KACJ8H,EAAYhI,EAAAgI,aACZC,EAAUjI,EAAAiI,WACVC,EAASlI,EAAAkI,UACT1H,EAAAR,EAAAmI,WAAAA,OAAU,IAAA3H,EAAG,aAAYA,EACzBY,EAAApB,EAAAoI,QAAAA,OAAU,IAAAhH,EAAA,KAAIA,EACdiH,EAAcrI,EAAAsI,QAAdA,OAAO,IAAAD,EAAG,KAAIA,EAERE,EAAAC,EAAAA,OAAkCC,EAAQA,SAA8BC,EAAaC,GAACzI,EAAMiI,EAAY,QAAvGS,OAAcC,OACfC,EAAAN,EAAoBA,OAAAC,WAA6B,CACrDM,UAAW7I,GAAQ,KACnB8I,QAAS9I,GAAQ,KACjB+I,aAAcC,EAAUC,QAHnBC,OAAOC,OAMRC,EAAW1H,EAAAA,QAAMvB,OAAyB,MAC1CkJ,EAAc3H,EAAAA,QAAMvB,OAAuB,MAE3CmJ,EAAQC,GAAMrB,EAASE,GAASpF,KAAI,SAACV,GACzC,IAAMkH,EAAa3B,OAAOvF,GAC1B,MAAO,CACLsF,MAAO4B,EACPhF,MAAOgF,MAkCLC,EAeFC,EAAAA,GAAc,CAChBb,UAAWK,EAAML,UACjBC,QAASI,EAAMJ,QACfC,aAAcG,EAAMH,aACpBY,cAjDoB,SAACC,GAChBA,IAIAA,EAAKb,aAGRI,EAASS,GAFTT,2BAAcS,GAAI,CAAEb,aAAcC,QAKpCL,EAAgBH,EAAaC,GAACmB,EAAKf,UAAWZ,EAAY,KAEtDH,GACFA,EAAa8B,EAAKf,aAoCpBgB,eAAgB,EAChBC,eAAgB,EAChBC,qBAAqB,IArBrBvH,EAAciH,EAAAjH,eACdwH,EAAYP,EAAAO,aACZrJ,EAAc8I,EAAA9I,eACdC,EAAa6I,EAAA7I,cACbE,EAAyB2I,EAAA3I,0BACzBD,EAAa4I,EAAA5I,cACbH,EAAa+I,EAAA/I,cACbD,gBACAQ,gBACAF,iBACAC,gBACAiJ,uBACAC,mBACAC,aAWIC,EAA8BC,EAAAA,gBAA5BC,GAAMF,EAAAE,OAAEC,GAAOH,EAAAG,QAAEC,GAAMJ,EAAAI,OAG/BC,EAAAA,WAAU,WACR,IAAMC,EAAc,SAACC,SACftB,KAAsC,UAAtBA,MAAAA,OAAW,EAAXA,EAAauB,eAAS,IAAA9K,OAAA,EAAAA,EAAA+K,SAASF,MAAAA,SAAAA,EAAOG,UAAiBP,MAI7E,OAFAQ,SAASC,iBAAiB,YAAaN,GAEhC,WACLK,SAASE,oBAAoB,YAAaP,MAE3C,CAACH,GAASlB,IAEb,IAQM6B,GAAoB,SAACC,GACzB,IAAMC,EAAWpL,GAAO,IAAIqL,KAC5BD,EAAQE,SAASC,OAAOJ,EAAa3G,QACrC2F,EAASiB,IAGLI,GAAmB,SAACL,GACxB,IAAMC,EAAWpL,GAAO,IAAIqL,KAC5BD,EAAQK,YAAYF,OAAOJ,EAAa3G,QACxC2F,EAASiB,IASLM,GAAe,SAACnJ,GACpB,IAAMvC,EAAO,IAAIqL,KAEjB,OADArL,EAAKsL,SAAS/I,GACPoJ,EAAMA,OAAC3L,EAAM,SAGhB4L,IAAW7D,MAAAA,OAAU,EAAVA,EAAY/F,MAAOsF,GAAYS,EAAW/F,MAAQ,KAEnE,OACEN,EAAC,QAAAC,cAAAkK,EAAAA,mBACC,CAAApL,YAAaA,EACbC,cAAeA,EACfC,eAAgBA,EAChBC,cAAeA,EACfC,cAAeA,EACfC,0BAA2BA,EAC3BC,aAAcA,EACdC,YAAaA,EACbC,YAAaA,GAEbS,EAAAA,QAACC,cAAAmK,EAAAA,SAAQtB,OAAQA,GAAQD,QAASA,GAASD,OA1B5B,YACZvC,MAAAA,SAAAA,EAAY3F,aACfkI,MAwB+DyB,gBAAiB3C,EAAUpB,UAAWA,GACnGtG,UAAAC,cAACqK,EAAAA,eAAc,KACbtK,UAAAC,cAACiB,EAAAA,QAAG,KACFlB,UAACC,cAAAsK,EAASA,UACRC,WAAA,CAAAC,aACEzK,UAAAC,cAACyK,EAAI,QAAC,CAAAC,QAAQtE,MAAAA,OAAA,EAAAA,EAAY3F,YAAa,cAAgB,WACrDV,EAAC,QAAAC,cAAA2K,EAAIA,KAAC,CAAAC,KAAK,cAAcvK,KAAM4J,MAGnCpH,MAAOkE,EACP8D,SA3GU,SAACC,GACrB,IAAMC,EAAYD,EAAE3B,OAAOtG,MAC3BmE,EAAgB+D,GAEhB,IAAMC,EAAaC,EAAAA,GAAUF,EAAWzE,EAAY,IAAIoD,MAEpDqB,EAAUtI,SAAW6D,EAAW7D,QAAUyI,EAAAA,OAAOF,KACnD5L,EAAa4L,GACbhE,EAAgBH,EAAAA,GAAcmE,EAAY1E,EAAY,OAoG9CmB,SAAUA,EACV9H,UA1DM,SAACmL,GACH,UAAVA,EAAEtJ,KAAmBqH,KACvBD,KACAkC,EAAEK,iBACFL,EAAEM,oBAuDMV,QAAUtE,MAAAA,OAAA,EAAAA,EAAYiF,YAAa,UAAY,QAC3CjF,MAIVrG,EAAC,QAAAC,cAAAsL,kBAAenL,IAAKuH,EAAa6D,OAAO,MACvCxL,EAAAA,QAAAC,cAACwL,EAAAA,cAAa,CAACC,aAAa,iBAC1B1L,EAAC,QAAAC,cAAA0L,WAAOC,EAAE,OAAOC,QAAQ,iBACvB7L,EAAAA,QAAAC,cAACC,SAAO,CAAA4L,SAAS,cAAcnM,QAAS4I,EAAoBlI,QAAQ,eAAeC,KAAK,OACvFgI,EAAahH,KAAI,SAACyK,GAAgB,OACjC/L,EAAAA,QAAAC,cAACyB,EAAAA,QAAM,CAACD,IAAKsK,EAAYlL,MAAOmL,IAAK,EAAGC,EAAE,QACxCjM,EAAAA,QAACC,cAAAiM,OACC,CAAAC,YAAa,CACX9L,QAAS,WACT+L,KAAMpC,GAAa+B,EAAYlL,OAC/BP,KAAM,MAER+L,UAAW,CACTC,UAAWrG,GACXsG,SAAU/C,MAGdxJ,EAAAA,QAACC,cAAAiM,OACC,CAAAC,YAAa,CACX9L,QAAS,WACT+L,KAAMjG,OAAO4F,EAAYnL,MACzBN,KAAM,MAER+L,UAAW,CACTC,UAAW1E,EACX2E,SAAUzC,UAKlB9J,EAAAA,QAAAC,cAACC,EAAAA,OAAO,CAAA4L,SAAS,eAAenM,QAAS6I,EAAgBnI,QAAQ,eAAeC,KAAK,SAGzFN,UAAAC,cAACuM,EAAAA,YAAW,KACVxM,EAAAA,QAAAC,cAACkB,UAAI,CAAC6K,IAAI,SAAS5K,gBAAiB,UAAAqL,OAAUnE,EAAa5F,OAAS,MACjE4F,EAAahH,KAAI,SAACT,GAAU,OAC3Bb,EAAAA,sBAACW,EAAK,CACJc,IAAK,UAAGZ,EAAMD,KAAI,KAAA6L,OAAI5L,EAAMA,OAC5BD,KAAMC,EAAMD,KACZC,MAAOA,EAAMA,MACbC,eAAgBA,EAChBvC,cAAe,WAAY,OAAAsK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/modal.component.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Modal as CModal, ModalProps as CModalProps, ModalContent, ModalOverlay } from '@chakra-ui/modal';\nimport { useBreakpointValue } from '@chakra-ui/media-query';\nimport useTheme from 'hooks/useTheme
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/modal.component.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Modal as CModal, ModalProps as CModalProps, ModalContent, ModalOverlay } from '@chakra-ui/modal';\nimport { useBreakpointValue } from '@chakra-ui/media-query';\nimport useTheme from 'hooks/useTheme';\nimport { FocusableElement } from '@chakra-ui/utils';\nimport { ModalSize } from './modal.types';\nimport useAdaptiveColor from 'hooks/useAdaptiveColor';\nimport withDarkMode from 'hocs/withDarkMode';\n\ntype ResponsiveBreakpoints = 'base' | 'md';\n\nexport interface ModalProps extends CModalProps {\n children: ReactNode;\n isCentered?: boolean;\n responsiveModalSizes?: Partial<Record<ResponsiveBreakpoints, ModalSize>>;\n allowEscape?: boolean;\n useFullScreenMobile?: boolean;\n darkMode?: boolean;\n initialFocusRef?: React.RefObject<FocusableElement>;\n scrollBehavior?: 'inside' | 'outside';\n size?: string;\n}\n\nconst Modal = ({\n children,\n isOpen,\n onClose,\n isCentered = true,\n responsiveModalSizes,\n allowEscape = true,\n useFullScreenMobile = true,\n initialFocusRef,\n scrollBehavior,\n darkMode,\n size = 'xl',\n ...rest\n}: ModalProps): JSX.Element => {\n const { colors, radii } = useTheme();\n const adaptiveBackgroundColor = useAdaptiveColor(colors.background);\n const backgroundColor = !darkMode ? adaptiveBackgroundColor : colors.background.dark;\n\n // Responsive values for full screen modals on phones.\n const fullScreenMobileSize = useBreakpointValue({ base: 'full', md: size });\n const fullScreenMobileBorderRadius = useBreakpointValue({ base: 0, md: radii.xl });\n const modalMargin = useBreakpointValue({ base: useFullScreenMobile ? 0 : 16, md: 16 });\n\n const Modal: JSX.Element = (\n <CModal\n closeOnEsc={allowEscape}\n closeOnOverlayClick={allowEscape}\n autoFocus={!!initialFocusRef}\n isOpen={isOpen}\n onClose={onClose}\n scrollBehavior={scrollBehavior}\n isCentered={isCentered}\n size={useFullScreenMobile ? fullScreenMobileSize : size}\n motionPreset=\"slideInBottom\"\n {...rest}\n >\n <ModalOverlay />\n <ModalContent\n backgroundColor={backgroundColor}\n m={modalMargin}\n {...(!useFullScreenMobile && { mx: 5 })}\n borderRadius={useFullScreenMobile ? fullScreenMobileBorderRadius : radii.xl}\n {...(useFullScreenMobile && { minH: { base: '-webkit-fill-available', md: 'auto' } })}\n >\n {children}\n </ModalContent>\n </CModal>\n );\n\n return withDarkMode(Modal, !!darkMode);\n};\n\nexport default Modal;\n"],"names":["_a","children","isOpen","onClose","_b","isCentered","responsiveModalSizes","_c","allowEscape","_d","useFullScreenMobile","initialFocusRef","scrollBehavior","darkMode","_e","size","rest","__rest","_f","useTheme","colors","radii","adaptiveBackgroundColor","useAdaptiveColor","background","backgroundColor","dark","fullScreenMobileSize","useBreakpointValue","base","md","fullScreenMobileBorderRadius","xl","modalMargin","Modal","React","createElement","CModal","closeOnEsc","closeOnOverlayClick","autoFocus","motionPreset","ModalOverlay","ModalContent","__assign","m","mx","borderRadius","minH","withDarkMode"],"mappings":"qgCAuBc,SAACA,GACb,IAAAC,EAAQD,EAAAC,SACRC,EAAMF,EAAAE,OACNC,EAAOH,EAAAG,QACPC,EAAAJ,EAAAK,WAAAA,cAAiBD,EACGJ,EAAAM,qBAAA,IACpBC,gBAAAC,OAAc,IAAAD,GAAIA,EAClBE,wBAAAC,OAAsB,IAAAD,GAAIA,EAC1BE,EAAeX,EAAAW,gBACfC,EAAcZ,EAAAY,eACdC,aACAC,EAAAd,EAAAe,KAAAA,OAAO,IAAAD,EAAA,OACJE,EAZUC,EAAAA,OAAAjB,EAAA,CAAA,WAAA,SAAA,UAAA,aAAA,uBAAA,cAAA,sBAAA,kBAAA,iBAAA,WAAA,SAcPkB,EAAoBC,EAAQA,WAA1BC,EAAMF,EAAAE,OAAEC,EAAKH,EAAAG,MACfC,EAA0BC,EAAAA,iBAAiBH,EAAOI,YAClDC,EAAmBZ,EAAqCO,EAAOI,WAAWE,KAA5CJ,EAG9BK,EAAuBC,EAAAA,mBAAmB,CAAEC,KAAM,OAAQC,GAAIf,IAC9DgB,EAA+BH,EAAkBA,mBAAC,CAAEC,KAAM,EAAGC,GAAIT,EAAMW,KACvEC,EAAcL,qBAAmB,CAAEC,KAAMnB,EAAsB,EAAI,GAAIoB,GAAI,KAE3EI,EACJC,EAAC,QAAAC,cAAAC,EAAMH,kBACLI,WAAY9B,EACZ+B,oBAAqB/B,EACrBgC,YAAa7B,EACbT,OAAQA,EACRC,QAASA,EACTS,eAAgBA,EAChBP,WAAYA,EACZU,KAAML,EAAsBiB,EAAuBZ,EACnD0B,aAAa,iBACTzB,GAEJmB,UAAAC,cAACM,EAAYA,aAAG,MAChBP,EAAC,QAAAC,cAAAO,EAAYA,aACXC,EAAAA,SAAA,CAAAnB,gBAAiBA,EACjBoB,EAAGZ,IACGvB,GAAuB,CAAEoC,GAAI,GACnC,CAAAC,aAAcrC,EAAsBqB,EAA+BV,EAAMW,IACpEtB,GAAuB,CAAEsC,KAAM,CAAEnB,KAAM,yBAA0BC,GAAI,UAEzE7B,IAKP,OAAOgD,eAAaf,IAASrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/RatingDots/components/RatingDot/ratingDot.component.tsx","../../../src/components/RatingDots/ratingDots.component.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport useTheme from 'hooks/useTheme
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/RatingDots/components/RatingDot/ratingDot.component.tsx","../../../src/components/RatingDots/ratingDots.component.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport useTheme from 'hooks/useTheme';\nimport Flex from 'chakra/components/Flex';\n\nexport interface IRatingDotProps {\n number: number;\n isInteractive?: boolean;\n isDisabled?: boolean;\n onClick?: (value: number) => void;\n selected: boolean;\n}\n\nconst RatingDot = ({ number, isInteractive, isDisabled, onClick, selected }: IRatingDotProps): JSX.Element => {\n const { colors } = useTheme();\n\n const handleClick = useCallback((): void => {\n if (onClick) onClick(number);\n }, [number, onClick]);\n\n return (\n <>\n {isInteractive ? (\n isDisabled ? (\n <Flex\n as=\"button\"\n bgColor={selected ? `${colors.background.brand}80` : 'transparent'}\n h=\"60px\"\n w=\"60px\"\n borderRadius=\"30px\"\n border={`2px solid ${selected ? 'transparent' : colors.background.brand}50`}\n color={selected ? 'white' : `${colors.background.brand}50`}\n mr={1}\n mb={1}\n justifyContent=\"center\"\n alignItems=\"center\"\n fontSize=\"lg\"\n cursor=\"not-allowed\"\n >\n {number}\n </Flex>\n ) : (\n <Flex\n as=\"button\"\n onClick={handleClick}\n bgColor={selected ? colors.background.brand : 'transparent'}\n h=\"60px\"\n w=\"60px\"\n borderRadius=\"30px\"\n border={`2px solid ${colors.background.brand}`}\n color={selected ? colors.text.dark.default : colors.text.light.link}\n mr={1}\n mb={1}\n justifyContent=\"center\"\n alignItems=\"center\"\n fontSize=\"lg\"\n cursor=\"pointer\"\n _hover={{\n bg: selected ? colors.background.brand : colors.background.tealLight,\n }}\n >\n {number}\n </Flex>\n )\n ) : (\n <Flex\n as=\"div\"\n bgColor={colors.background.brand}\n h=\"40px\"\n w=\"40px\"\n borderRadius=\"20px\"\n border={`2px solid ${colors.background.brand}`}\n color={colors.text.dark.default}\n mr={1}\n mb={1}\n justifyContent=\"center\"\n alignItems=\"center\"\n fontSize=\"lg\"\n cursor=\"default\"\n >\n {number}\n </Flex>\n )}\n </>\n );\n};\n\nexport default RatingDot;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport Flex from 'chakra/components/Flex';\nimport Text from 'components/Text';\nimport RatingDot from './components/RatingDot/ratingDot.component';\n\nexport interface IRatingDotsProps {\n minValue: number;\n maxValue: number;\n minLabel?: string;\n maxLabel?: string;\n centeredLabel?: string;\n isInteractive?: boolean;\n isDisabled?: boolean;\n onClick?: (value: number) => void;\n selected?: number;\n}\n\nconst RatingDots = ({\n minValue,\n maxValue,\n minLabel,\n maxLabel,\n centeredLabel,\n isDisabled,\n isInteractive,\n onClick,\n selected,\n}: IRatingDotsProps): JSX.Element => {\n const [selectedValue, setSelectedValue] = useState<number>();\n\n const roundedMin = useMemo(() => Math.round(minValue), [minValue]);\n const roundedMax = useMemo(() => Math.round(maxValue), [maxValue]);\n\n const values = useMemo(() => {\n const arr = [];\n for (let i = roundedMin; i <= roundedMax; i++) {\n arr.push(i);\n }\n return arr;\n }, [roundedMax, roundedMin]);\n\n useEffect(() => {\n if (selected !== undefined) setSelectedValue(selected);\n }, [selected]);\n\n return (\n <>\n <Flex my={4} flexWrap=\"wrap\" justifyContent={isInteractive ? 'center' : 'flex-start'}>\n {values.map((value) => (\n <RatingDot\n key={`composer-rating-dot-${value}`}\n number={value}\n isInteractive={isInteractive}\n onClick={onClick}\n isDisabled={isDisabled}\n selected={selectedValue === value}\n />\n ))}\n </Flex>\n <Flex justifyContent={isInteractive ? (centeredLabel ? 'center' : 'space-between') : 'flex-start'}>\n {centeredLabel ? (\n <Text colorToken=\"subtle\" size=\"sm\">\n {centeredLabel}\n </Text>\n ) : (\n <>\n {minLabel && <Text colorToken=\"subtle\" size=\"sm\">{`${roundedMin} - ${minLabel}`}</Text>}\n {!isInteractive && <Text colorToken=\"subtle\" size=\"sm\" pr={1}>{`,`}</Text>}\n {maxLabel && <Text colorToken=\"subtle\" size=\"sm\">{`${roundedMax} - ${maxLabel}`}</Text>}\n </>\n )}\n </Flex>\n </>\n );\n};\n\nexport default RatingDots;\n"],"names":["RatingDot","_a","number","isInteractive","isDisabled","onClick","selected","colors","useTheme","handleClick","useCallback","React","createElement","Flex","as","bgColor","background","brand","h","w","borderRadius","border","concat","color","mr","mb","justifyContent","alignItems","fontSize","cursor","text","dark","default","light","link","_hover","bg","tealLight","minValue","maxValue","minLabel","maxLabel","centeredLabel","_b","__read","useState","selectedValue","setSelectedValue","roundedMin","useMemo","Math","round","roundedMax","values","arr","i","push","useEffect","undefined","Fragment","my","flexWrap","map","value","key","Text","colorToken","size","pr"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/TimePicker/components/ScrollContainer.tsx","../../../src/components/TimePicker/components/TimeOption.tsx","../../../src/components/TimePicker/timePicker.component.tsx","../../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport Flex from 'chakra/components/Flex';\n\nconst ScrollContainer = ({ ...props }): JSX.Element => {\n return (\n <Flex\n direction=\"column\"\n gap={1}\n overflowY=\"auto\"\n sx={{\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n }}\n >\n {props.children}\n </Flex>\n );\n};\n\nexport default ScrollContainer;\n","import React, { MutableRefObject, useCallback } from 'react';\nimport Box from 'chakra/components/Box';\nimport useTheme from 'hooks/useTheme/useTheme';\n\ninterface TimeOptionProps {\n value: string;\n innerRef?: MutableRefObject<HTMLDivElement | null> | null;\n isSelected: boolean;\n handleClick: (selectedValue: string) => void;\n}\n\nconst TimeOption = ({ value, innerRef, isSelected, handleClick }: TimeOptionProps): JSX.Element => {\n const { colors, fontSizes, radii } = useTheme();\n\n const onClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n handleClick(selectedValue);\n },\n [handleClick],\n );\n\n return (\n <Box\n ref={innerRef}\n onClick={onClick}\n background={isSelected ? colors.background.brand : colors.white}\n color={isSelected ? colors.text.dark.default : colors.text.light.subtle}\n fontSize={fontSizes.sm}\n textAlign=\"center\"\n px={3}\n py={1}\n w=\"100%\"\n borderRadius={radii.md}\n cursor=\"pointer\"\n _hover={{\n background: isSelected ? colors.background.brand : colors.background.hover,\n }}\n >\n {value}\n </Box>\n );\n};\n\nexport default TimeOption;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { PlacementWithLogical } from '@chakra-ui/popper';\nimport { PopoverBody } from '@chakra-ui/popover';\nimport Box from 'chakra/components/Box';\nimport Flex from 'chakra/components/Flex';\nimport useDisclosure from 'chakra/hooks/useDisclosure';\nimport Icon from 'components/Icon';\nimport Popover from 'components/Popover';\nimport format from 'date-fns/format';\nimport TextInput, { TextInputProps } from '../TextInput/textInput.component';\nimport ScrollContainer from './components/ScrollContainer';\nimport TimeOption from './components/TimeOption';\nimport { Meridiem } from './timePicker.types';\nimport useIconTextSizeMap from 'hooks/useIconTextSizeMap';\n\nexport interface TimePickerProps {\n initialTime: Date;\n minuteInterval?: number;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n placement?: PlacementWithLogical;\n onTimeChange?: (time: Date) => void;\n}\n\nconst TimePicker = ({\n initialTime,\n minuteInterval = 5,\n inputProps,\n placement,\n onTimeChange,\n}: TimePickerProps): JSX.Element => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const localTime = useMemo(() => new Date(initialTime), [initialTime]);\n\n // selectedTime should always be UTC\n const [selectedTime, setSelectedTime] = useState(initialTime);\n\n const initialSelectedHour = useMemo(() => {\n const hours = localTime.getHours();\n let adjustedHours = hours;\n\n if (hours > 12) {\n adjustedHours = hours - 12;\n }\n if (hours === 0) {\n adjustedHours = 12;\n }\n\n return adjustedHours.toString();\n }, [localTime]);\n\n // convert to local time for display\n const [selectedHour, setSelectedHour] = useState(initialSelectedHour);\n const [selectedMinute, setSelectedMinute] = useState(localTime.getMinutes().toString());\n const [selectedMeridiem, setSelectedMeridiem] = useState<string>(\n localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM,\n );\n\n const hourRef = useRef<HTMLDivElement>(null);\n const minuteRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (isOpen) {\n if (hourRef.current) {\n hourRef.current.scrollIntoView();\n }\n if (minuteRef.current) {\n minuteRef.current.scrollIntoView();\n }\n }\n }, [isOpen]);\n\n const formattedTime = useMemo(() => {\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour: string, minute: string, meridiem: string) => {\n let meridiemAdjustment = 0;\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (meridiem === Meridiem.PM && Number(hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (meridiem === Meridiem.AM && Number(hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n return (\n <Popover\n isOpen={isOpen}\n onOpen={onOpen}\n onClose={onClose}\n placement={placement}\n contentProps={{ width: 'max-content' }}\n popoverTrigger={\n <Box>\n <TextInput\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n isReadOnly\n cursor={'pointer'}\n {...inputProps}\n />\n </Box>\n }\n >\n <PopoverBody p={3}>\n <Flex height=\"186px\" gap={1.5} overflow=\"hidden\">\n <ScrollContainer>\n {hourOptions.map((hour) => {\n return (\n <TimeOption\n key={`hour-option-${hour}`}\n innerRef={hour === selectedHour ? hourRef : null}\n value={hour}\n isSelected={hour === selectedHour}\n handleClick={handleHourClick}\n />\n );\n })}\n </ScrollContainer>\n <ScrollContainer>\n {minuteOptions.map((minute) => {\n return (\n <TimeOption\n key={`minute-option-${minute}`}\n innerRef={minute === formatNumber(selectedMinute) ? minuteRef : null}\n value={minute}\n isSelected={minute === formatNumber(selectedMinute)}\n handleClick={handleMinuteClick}\n />\n );\n })}\n </ScrollContainer>\n <ScrollContainer>\n {meridiemOptions.map((meridiem) => {\n return (\n <TimeOption\n key={`meridian-option-${meridiem}`}\n value={meridiem}\n isSelected={meridiem === selectedMeridiem}\n handleClick={handleMeridiemClick}\n />\n );\n })}\n </ScrollContainer>\n </Flex>\n </PopoverBody>\n </Popover>\n );\n};\n\nexport default TimePicker;\n","import React from 'react';\nimport { BoxProps } from '@chakra-ui/layout';\nimport Box from 'chakra/components/Box';\nimport Flex from 'chakra/components/Flex';\nimport TimePicker, { TimePickerProps } from '../TimePicker/timePicker.component';\n\nexport interface TimeRangeProps {\n startTimePickerProps: TimePickerProps;\n endTimePickerProps: TimePickerProps;\n dashContainerProps?: BoxProps;\n}\n\nconst TimeRange = ({ startTimePickerProps, endTimePickerProps, dashContainerProps }: TimeRangeProps): JSX.Element => {\n return (\n <Flex>\n <TimePicker {...startTimePickerProps} />\n <Box alignSelf=\"center\" mx={1} {...dashContainerProps}>\n -\n </Box>\n <TimePicker {...endTimePickerProps} />\n </Flex>\n );\n};\n\nexport default TimeRange;\n"],"names":["ScrollContainer","_a","props","__rest","React","createElement","Flex","direction","gap","overflowY","sx","display","children","TimeOption","value","innerRef","isSelected","handleClick","_b","useTheme","colors","fontSizes","radii","onClick","useCallback","event","selectedValue","currentTarget","textContent","Box","ref","background","brand","white","color","text","dark","default","light","subtle","fontSize","sm","textAlign","px","py","w","borderRadius","md","cursor","_hover","hover","TimePicker","initialTime","minuteInterval","inputProps","placement","onTimeChange","_c","useDisclosure","isOpen","onOpen","onClose","localTime","useMemo","Date","_d","__read","useState","selectedTime","setSelectedTime","initialSelectedHour","hours","getHours","adjustedHours","toString","_e","selectedHour","setSelectedHour","_f","getMinutes","selectedMinute","setSelectedMinute","_g","Meridiem","PM","AM","selectedMeridiem","setSelectedMeridiem","hourRef","useRef","minuteRef","useEffect","current","scrollIntoView","formattedTime","format","formatNumber","number","formattedValue","length","concat","hourOptions","map","hour","minuteOptions","minutes","i","push","meridiemOptions","handleTimeChange","minute","meridiem","meridiemAdjustment","Number","time","setHours","date","handleHourClick","handleMinuteClick","handleMeridiemClick","Popover","contentProps","width","popoverTrigger","TextInput","__assign","rightElement","Icon","size","useIconTextSizeMap","name","isReadOnly","PopoverBody","p","height","overflow","key","startTimePickerProps","endTimePickerProps","dashContainerProps","alignSelf","mx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/TimePicker/components/ScrollContainer.tsx","../../../src/components/TimePicker/components/TimeOption.tsx","../../../src/components/TimePicker/timePicker.component.tsx","../../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport Flex from 'chakra/components/Flex';\n\nconst ScrollContainer = ({ ...props }): JSX.Element => {\n return (\n <Flex\n direction=\"column\"\n gap={1}\n overflowY=\"auto\"\n sx={{\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n }}\n >\n {props.children}\n </Flex>\n );\n};\n\nexport default ScrollContainer;\n","import React, { MutableRefObject, useCallback } from 'react';\nimport Box from 'chakra/components/Box';\nimport useTheme from 'hooks/useTheme';\n\ninterface TimeOptionProps {\n value: string;\n innerRef?: MutableRefObject<HTMLDivElement | null> | null;\n isSelected: boolean;\n handleClick: (selectedValue: string) => void;\n}\n\nconst TimeOption = ({ value, innerRef, isSelected, handleClick }: TimeOptionProps): JSX.Element => {\n const { colors, fontSizes, radii } = useTheme();\n\n const onClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n handleClick(selectedValue);\n },\n [handleClick],\n );\n\n return (\n <Box\n ref={innerRef}\n onClick={onClick}\n background={isSelected ? colors.background.brand : colors.white}\n color={isSelected ? colors.text.dark.default : colors.text.light.subtle}\n fontSize={fontSizes.sm}\n textAlign=\"center\"\n px={3}\n py={1}\n w=\"100%\"\n borderRadius={radii.md}\n cursor=\"pointer\"\n _hover={{\n background: isSelected ? colors.background.brand : colors.background.hover,\n }}\n >\n {value}\n </Box>\n );\n};\n\nexport default TimeOption;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { PlacementWithLogical } from '@chakra-ui/popper';\nimport { PopoverBody } from '@chakra-ui/popover';\nimport Box from 'chakra/components/Box';\nimport Flex from 'chakra/components/Flex';\nimport useDisclosure from 'chakra/hooks/useDisclosure';\nimport Icon from 'components/Icon';\nimport Popover from 'components/Popover';\nimport format from 'date-fns/format';\nimport TextInput, { TextInputProps } from '../TextInput/textInput.component';\nimport ScrollContainer from './components/ScrollContainer';\nimport TimeOption from './components/TimeOption';\nimport { Meridiem } from './timePicker.types';\nimport useIconTextSizeMap from 'hooks/useIconTextSizeMap';\n\nexport interface TimePickerProps {\n initialTime: Date;\n minuteInterval?: number;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n placement?: PlacementWithLogical;\n onTimeChange?: (time: Date) => void;\n}\n\nconst TimePicker = ({\n initialTime,\n minuteInterval = 5,\n inputProps,\n placement,\n onTimeChange,\n}: TimePickerProps): JSX.Element => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const localTime = useMemo(() => new Date(initialTime), [initialTime]);\n\n // selectedTime should always be UTC\n const [selectedTime, setSelectedTime] = useState(initialTime);\n\n const initialSelectedHour = useMemo(() => {\n const hours = localTime.getHours();\n let adjustedHours = hours;\n\n if (hours > 12) {\n adjustedHours = hours - 12;\n }\n if (hours === 0) {\n adjustedHours = 12;\n }\n\n return adjustedHours.toString();\n }, [localTime]);\n\n // convert to local time for display\n const [selectedHour, setSelectedHour] = useState(initialSelectedHour);\n const [selectedMinute, setSelectedMinute] = useState(localTime.getMinutes().toString());\n const [selectedMeridiem, setSelectedMeridiem] = useState<string>(\n localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM,\n );\n\n const hourRef = useRef<HTMLDivElement>(null);\n const minuteRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (isOpen) {\n if (hourRef.current) {\n hourRef.current.scrollIntoView();\n }\n if (minuteRef.current) {\n minuteRef.current.scrollIntoView();\n }\n }\n }, [isOpen]);\n\n const formattedTime = useMemo(() => {\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour: string, minute: string, meridiem: string) => {\n let meridiemAdjustment = 0;\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (meridiem === Meridiem.PM && Number(hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (meridiem === Meridiem.AM && Number(hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n return (\n <Popover\n isOpen={isOpen}\n onOpen={onOpen}\n onClose={onClose}\n placement={placement}\n contentProps={{ width: 'max-content' }}\n popoverTrigger={\n <Box>\n <TextInput\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n isReadOnly\n cursor={'pointer'}\n {...inputProps}\n />\n </Box>\n }\n >\n <PopoverBody p={3}>\n <Flex height=\"186px\" gap={1.5} overflow=\"hidden\">\n <ScrollContainer>\n {hourOptions.map((hour) => {\n return (\n <TimeOption\n key={`hour-option-${hour}`}\n innerRef={hour === selectedHour ? hourRef : null}\n value={hour}\n isSelected={hour === selectedHour}\n handleClick={handleHourClick}\n />\n );\n })}\n </ScrollContainer>\n <ScrollContainer>\n {minuteOptions.map((minute) => {\n return (\n <TimeOption\n key={`minute-option-${minute}`}\n innerRef={minute === formatNumber(selectedMinute) ? minuteRef : null}\n value={minute}\n isSelected={minute === formatNumber(selectedMinute)}\n handleClick={handleMinuteClick}\n />\n );\n })}\n </ScrollContainer>\n <ScrollContainer>\n {meridiemOptions.map((meridiem) => {\n return (\n <TimeOption\n key={`meridian-option-${meridiem}`}\n value={meridiem}\n isSelected={meridiem === selectedMeridiem}\n handleClick={handleMeridiemClick}\n />\n );\n })}\n </ScrollContainer>\n </Flex>\n </PopoverBody>\n </Popover>\n );\n};\n\nexport default TimePicker;\n","import React from 'react';\nimport { BoxProps } from '@chakra-ui/layout';\nimport Box from 'chakra/components/Box';\nimport Flex from 'chakra/components/Flex';\nimport TimePicker, { TimePickerProps } from '../TimePicker/timePicker.component';\n\nexport interface TimeRangeProps {\n startTimePickerProps: TimePickerProps;\n endTimePickerProps: TimePickerProps;\n dashContainerProps?: BoxProps;\n}\n\nconst TimeRange = ({ startTimePickerProps, endTimePickerProps, dashContainerProps }: TimeRangeProps): JSX.Element => {\n return (\n <Flex>\n <TimePicker {...startTimePickerProps} />\n <Box alignSelf=\"center\" mx={1} {...dashContainerProps}>\n -\n </Box>\n <TimePicker {...endTimePickerProps} />\n </Flex>\n );\n};\n\nexport default TimeRange;\n"],"names":["ScrollContainer","_a","props","__rest","React","createElement","Flex","direction","gap","overflowY","sx","display","children","TimeOption","value","innerRef","isSelected","handleClick","_b","useTheme","colors","fontSizes","radii","onClick","useCallback","event","selectedValue","currentTarget","textContent","Box","ref","background","brand","white","color","text","dark","default","light","subtle","fontSize","sm","textAlign","px","py","w","borderRadius","md","cursor","_hover","hover","TimePicker","initialTime","minuteInterval","inputProps","placement","onTimeChange","_c","useDisclosure","isOpen","onOpen","onClose","localTime","useMemo","Date","_d","__read","useState","selectedTime","setSelectedTime","initialSelectedHour","hours","getHours","adjustedHours","toString","_e","selectedHour","setSelectedHour","_f","getMinutes","selectedMinute","setSelectedMinute","_g","Meridiem","PM","AM","selectedMeridiem","setSelectedMeridiem","hourRef","useRef","minuteRef","useEffect","current","scrollIntoView","formattedTime","format","formatNumber","number","formattedValue","length","concat","hourOptions","map","hour","minuteOptions","minutes","i","push","meridiemOptions","handleTimeChange","minute","meridiem","meridiemAdjustment","Number","time","setHours","date","handleHourClick","handleMinuteClick","handleMeridiemClick","Popover","contentProps","width","popoverTrigger","TextInput","__assign","rightElement","Icon","size","useIconTextSizeMap","name","isReadOnly","PopoverBody","p","height","overflow","key","startTimePickerProps","endTimePickerProps","dashContainerProps","alignSelf","mx"],"mappings":"+zDAGMA,EAAkB,SAACC,OAAKC,EAAKC,EAAAA,OAAAF,EAAV,IACvB,OACEG,UAACC,cAAAC,EAAI,QACH,CAAAC,UAAU,SACVC,IAAK,EACLC,UAAU,OACVC,GAAI,CACF,uBAAwB,CACtBC,QAAS,UAIZT,EAAMU,WCJPC,EAAa,SAACZ,OAAEa,EAAKb,EAAAa,MAAEC,EAAQd,EAAAc,SAAEC,EAAUf,EAAAe,WAAEC,EAAWhB,EAAAgB,YACtDC,EAA+BC,EAAAA,WAA7BC,EAAMF,EAAAE,OAAEC,EAASH,EAAAG,UAAEC,EAAKJ,EAAAI,MAE1BC,EAAUC,eACd,SAACC,GACC,IAAMC,EAAgBD,EAAME,cAAcC,aAAe,GACzDX,EAAYS,KAEd,CAACT,IAGH,OACEb,EAAC,QAAAC,cAAAwB,WACCC,IAAKf,EACLQ,QAASA,EACTQ,WAAYf,EAAaI,EAAOW,WAAWC,MAAQZ,EAAOa,MAC1DC,MAAOlB,EAAaI,EAAOe,KAAKC,KAAKC,QAAUjB,EAAOe,KAAKG,MAAMC,OACjEC,SAAUnB,EAAUoB,GACpBC,UAAU,SACVC,GAAI,EACJC,GAAI,EACJC,EAAE,OACFC,aAAcxB,EAAMyB,GACpBC,OAAO,UACPC,OAAQ,CACNlB,WAAYf,EAAaI,EAAOW,WAAWC,MAAQZ,EAAOW,WAAWmB,QAGtEpC,IChBDqC,EAAa,SAAClD,GAClB,IAAAmD,gBACAlC,EAAAjB,EAAAoD,eAAAA,aAAiB,EAACnC,EAClBoC,eACAC,EAAStD,EAAAsD,UACTC,EAAYvD,EAAAuD,aAENC,EAA8BC,EAAAA,gBAA5BC,EAAMF,EAAAE,OAAEC,EAAMH,EAAAG,OAAEC,EAAOJ,EAAAI,QACzBC,EAAYC,EAAAA,SAAQ,WAAM,OAAA,IAAIC,KAAKZ,KAAc,CAACA,IAGlDa,EAAAC,EAAAA,OAAkCC,EAAQA,SAACf,GAAY,GAAtDgB,EAAYH,EAAA,GAAEI,OAEfC,EAAsBP,EAAAA,SAAQ,WAClC,IAAMQ,EAAQT,EAAUU,WACpBC,EAAgBF,EASpB,OAPIA,EAAQ,KACVE,EAAgBF,EAAQ,IAEZ,IAAVA,IACFE,EAAgB,IAGXA,EAAcC,aACpB,CAACZ,IAGEa,EAAAT,EAAAA,OAAkCC,EAAQA,SAACG,GAAoB,GAA9DM,EAAYD,EAAA,GAAEE,OACfC,EAAAZ,EAAAA,OAAsCC,EAAQA,SAACL,EAAUiB,aAAaL,eAArEM,OAAgBC,OACjBC,EAAAhB,EAAAA,OAA0CC,WAC9CL,EAAUU,WAAa,GAAKW,EAAQA,SAACC,GAAKD,EAAAA,SAASE,IACpD,GAFMC,EAAgBJ,EAAA,GAAEK,OAInBC,EAAUC,SAAuB,MACjCC,EAAYD,SAAuB,MAEzCE,EAAAA,WAAU,WACJhC,IACE6B,EAAQI,SACVJ,EAAQI,QAAQC,iBAEdH,EAAUE,SACZF,EAAUE,QAAQC,oBAGrB,CAAClC,IAEJ,IAAMmC,EAAgB/B,EAAAA,SAAQ,WAC5B,OAAOgC,EAAMA,OAAC3B,EAAc,aAC3B,CAACA,IAEE4B,EAAe,SAACC,GACpB,IAAMC,EAAiBD,EAAOvB,WAC9B,OAA8B,IAA1BwB,EAAeC,OACV,IAAAC,OAAIF,GAGNA,GAGHG,EAActC,EAAAA,SAAQ,WAC1B,MAAO,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIuC,KAAI,SAACC,GAAS,OAAAA,EAAK7B,gBACjE,IAEG8B,EAAgBzC,EAAAA,SAAQ,WAE5B,IADA,IAAM0C,EAAU,GACPC,EAAI,EAAGA,EAAI,GAAIA,GAAKrD,EAC3BoD,EAAQE,KAAKD,GAGf,OAAOD,EAAQH,IAAIN,KAClB,CAAC3C,IAEEuD,EAAkB,CAACzB,EAAQA,SAACE,GAAIF,EAAQA,SAACC,IAEzCyB,EAAmBrF,EAAWA,aAClC,SAAC+E,EAAcO,EAAgBC,GAC7B,IAAIC,EAAqB,EAGrBD,IAAa5B,EAAAA,SAASC,IAAM6B,OAAOV,GAAQ,KAC7CS,EAAqB,IAInBD,IAAa5B,EAAAA,SAASE,IAAuB,KAAjB4B,OAAOV,KACrCS,GAAsB,IAGxB,IAAMzC,EAAQ0C,OAAOV,GAAQS,EACvBE,GAAO,IAAIlD,MAAOmD,SAAS5C,EAAO0C,OAAOH,GAAS,EAAG,GACrDM,EAAO,IAAIpD,KAAKkD,GACtB7C,EAAgB+C,GAEZ5D,GACFA,EAAa4D,KAGjB,CAAC5D,IAGG6D,EAAkB7F,eACtB,SAACV,GACC+D,EAAgB/D,GAChB+F,EAAiB/F,EAAOkE,EAAgBM,KAE1C,CAACuB,EAAkBvB,EAAkBN,IAGjCsC,EAAoB9F,eACxB,SAACV,GACCmE,EAAkBnE,GAClB+F,EAAiBjC,EAAc9D,EAAOwE,KAExC,CAACuB,EAAkBjC,EAAcU,IAG7BiC,EAAsB/F,eAC1B,SAACV,GACCyE,EAAoBzE,GACpB+F,EAAiBjC,EAAcI,EAAgBlE,KAEjD,CAAC+F,EAAkBjC,EAAcI,IAGnC,OACE5E,EAAA,QAAAC,cAACmH,EAAAA,QAAO,CACN7D,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTN,UAAWA,EACXkE,aAAc,CAAEC,MAAO,eACvBC,eACEvH,wBAACyB,EAAAA,QAAG,KACFzB,EAAA,QAAAC,cAACuH,EAASA,UACRC,EAAAA,SAAA,CAAAC,aAAc1H,EAAAA,QAACC,cAAA0H,EAAIA,MAACC,KAAMC,EAAAA,oBAAmB3E,MAAAA,OAAA,EAAAA,EAAY0E,OAAQ,MAAOE,KAAK,UAC7EpH,MAAOgF,EACPqC,cACAnF,OAAQ,WACJM,MAKVlD,EAAAA,QAAAC,cAAC+H,EAAAA,YAAW,CAACC,EAAG,GACdjI,UAAAC,cAACC,EAAI,QAAA,CAACgI,OAAO,QAAQ9H,IAAK,IAAK+H,SAAS,UACtCnI,EAAA,QAAAC,cAACL,EACE,KAAAqG,EAAYC,KAAI,SAACC,GAChB,OACEnG,EAAC,QAAAC,cAAAQ,EACC,CAAA2H,IAAK,eAAepC,OAAAG,GACpBxF,SAAUwF,IAAS3B,EAAeY,EAAU,KAC5C1E,MAAOyF,EACPvF,WAAYuF,IAAS3B,EACrB3D,YAAaoG,QAKrBjH,EAAA,QAAAC,cAACL,EACE,KAAAwG,EAAcF,KAAI,SAACQ,GAClB,OACE1G,wBAACS,EAAU,CACT2H,IAAK,iBAAApC,OAAiBU,GACtB/F,SAAU+F,IAAWd,EAAahB,GAAkBU,EAAY,KAChE5E,MAAOgG,EACP9F,WAAY8F,IAAWd,EAAahB,GACpC/D,YAAaqG,QAKrBlH,EAAA,QAAAC,cAACL,EACE,KAAA4G,EAAgBN,KAAI,SAACS,GACpB,OACE3G,EAAAA,QAACC,cAAAQ,EACC,CAAA2H,IAAK,mBAAmBpC,OAAAW,GACxBjG,MAAOiG,EACP/F,WAAY+F,IAAazB,EACzBrE,YAAasG,4BC/Lb,SAACtH,GAAE,IAAAwI,yBAAsBC,EAAkBzI,EAAAyI,mBAAEC,EAAkB1I,EAAA0I,mBAC/E,OACEvI,wBAACE,EAAAA,QAAI,KACHF,EAAC,QAAAC,cAAA8C,EAAe0E,EAAAA,SAAA,GAAAY,IAChBrI,EAAAA,QAACC,cAAAwB,UAAIgG,EAAAA,SAAA,CAAAe,UAAU,SAASC,GAAI,GAAOF,GAE7B,KACNvI,EAAA,QAAAC,cAAC8C,EAAe0E,EAAAA,SAAA,GAAAa"}
|