@corva/ui 3.75.0-16 → 3.75.0-17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
  2. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  3. package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.js +1 -1
  4. package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.js.map +1 -1
  5. package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.scss.js +1 -1
  6. package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js +1 -1
  7. package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js.map +1 -1
  8. package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.scss.js +1 -1
  9. package/cjs-bundle/componentsV2/DatePicker/DatePicker.js +1 -1
  10. package/cjs-bundle/componentsV2/DatePicker/DatePicker.js.map +1 -1
  11. package/cjs-bundle/componentsV2/DatePicker/DatePicker.scss.js +1 -1
  12. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
  13. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
  14. package/cjs-bundle/componentsV2/DatePicker/Input/Input.scss.js +2 -0
  15. package/cjs-bundle/componentsV2/DatePicker/Input/Input.scss.js.map +1 -0
  16. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  17. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  18. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  19. package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
  20. package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
  21. package/cjs-bundle/componentsV2/Popover/Popover.js +1 -1
  22. package/cjs-bundle/componentsV2/Popover/Popover.js.map +1 -1
  23. package/cjs-bundle/componentsV2/ToggleButtons/ToggleButtons.scss.js +1 -1
  24. package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
  25. package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
  26. package/componentsV2/Autocomplete/Autocomplete.js +1 -1
  27. package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  28. package/componentsV2/DatePicker/CalendarControls/CalendarControls.d.ts.map +1 -1
  29. package/componentsV2/DatePicker/CalendarControls/CalendarControls.js +1 -1
  30. package/componentsV2/DatePicker/CalendarControls/CalendarControls.js.map +1 -1
  31. package/componentsV2/DatePicker/CalendarControls/CalendarControls.scss.js +1 -1
  32. package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js +1 -1
  33. package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js.map +1 -1
  34. package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.scss.js +1 -1
  35. package/componentsV2/DatePicker/DatePicker.d.ts +4 -1
  36. package/componentsV2/DatePicker/DatePicker.d.ts.map +1 -1
  37. package/componentsV2/DatePicker/DatePicker.js +1 -1
  38. package/componentsV2/DatePicker/DatePicker.js.map +1 -1
  39. package/componentsV2/DatePicker/DatePicker.scss.js +1 -1
  40. package/componentsV2/DatePicker/Input/Input.d.ts +4 -2
  41. package/componentsV2/DatePicker/Input/Input.d.ts.map +1 -1
  42. package/componentsV2/DatePicker/Input/Input.js +1 -1
  43. package/componentsV2/DatePicker/Input/Input.js.map +1 -1
  44. package/componentsV2/DatePicker/Input/Input.scss.js +2 -0
  45. package/componentsV2/DatePicker/Input/Input.scss.js.map +1 -0
  46. package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts +7 -5
  47. package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
  48. package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  49. package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  50. package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  51. package/componentsV2/DatePicker/utils.d.ts +2 -2
  52. package/componentsV2/DatePicker/utils.d.ts.map +1 -1
  53. package/componentsV2/DatePicker/utils.js +1 -1
  54. package/componentsV2/DatePicker/utils.js.map +1 -1
  55. package/componentsV2/Popover/Popover.d.ts +1 -0
  56. package/componentsV2/Popover/Popover.d.ts.map +1 -1
  57. package/componentsV2/Popover/Popover.js +1 -1
  58. package/componentsV2/Popover/Popover.js.map +1 -1
  59. package/componentsV2/ToggleButtons/ToggleButtons.scss.js +1 -1
  60. package/mcp-server/server.mjs +7 -2
  61. package/package.json +1 -1
  62. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../src/componentsV2/DatePicker/DatePicker.tsx"],"sourcesContent":["import { ReactElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport moment from 'moment';\n\nimport { Popover } from '../Popover';\nimport { TextInputNextProps } from '../TextInputNext';\n\nimport { CalendarControls } from './CalendarControls';\nimport { TimePicker, TimePickerImperativeHandle } from './TimePicker';\nimport { Input } from './Input';\nimport {\n applyOffsetSeconds,\n DatePickerChangeHandler,\n DatePickerType,\n DatePickerValue,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n} from './utils';\nimport { CalendarGrid, CalendarGridProps } from './CalendarGrid/CalendarGrid';\n\nimport styles from './DatePicker.scss';\n\ntype DatePickerBaseProps<IsRange extends boolean | undefined = false> = {\n label?: ReactNode;\n placeholder?: string;\n value?: DatePickerValue<IsRange>;\n onChange?: DatePickerChangeHandler<IsRange>;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * maximum selectable date\n */\n maxDate?: Date;\n /**\n * Type: dates only / date + time / month\n */\n type?: DatePickerType;\n range?: IsRange;\n /**\n * Function that returns a classname / list of classnames for custom styling of date tiles\n */\n getTileClassName?: (args: { activeStartDate: Date; date: Date }) => string;\n /**\n * Returns whether a tile should be disabled. Is ***not*** meant as an alternative method of providing `minDate` or `maxDate`\n */\n getTileDisabled?: (args: { activeStartDate: Date; date: Date }) => boolean;\n /**\n * Determines how the date will be displayed and how user's input will be parsed\n */\n format?: string;\n /**\n * If `true` - disables user input\n */\n readOnly?: boolean;\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n className?: string;\n testId?: string;\n\n // TODO remove when next becomes baseline\n isNext: boolean;\n};\n\nexport const getActiveStartDate = <IsRange extends boolean | undefined = false>({\n value,\n minDate,\n maxDate,\n}: Pick<DatePickerBaseProps<IsRange>, 'value' | 'minDate' | 'maxDate'>) => {\n const isValuesArray = Array.isArray(value);\n\n // Setting viewed time period\n const maybeStartDate = isValuesArray ? value[0] : (value as Date | undefined);\n const startDate = maybeStartDate || new Date();\n\n if (minDate && startDate.getTime() < minDate.getTime()) {\n return minDate;\n } else if (maxDate && startDate.getTime() > maxDate.getTime()) {\n return maxDate;\n }\n\n return startDate;\n};\n\nconst DatePickerBase = <IsRange extends boolean | undefined = false>({\n label,\n value,\n maxDate,\n minDate,\n className,\n testId,\n onChange,\n readOnly,\n type = 'date',\n range,\n getTileClassName,\n getTileDisabled,\n placeholder,\n format,\n focusOnClear = true,\n labelPlacement = 'top',\n size = 'small',\n elementsClassNames,\n isNext,\n clearable = true,\n}: DatePickerBaseProps<IsRange>) => {\n const fieldRef = useRef<HTMLDivElement>(null);\n const timePickerImperativeHandle = useRef<TimePickerImperativeHandle>(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const [activeStartDate, setActiveStartDate] = useState<Date>(\n getActiveStartDate({ maxDate, minDate, value })\n );\n\n // Temporary inner storage for dateTime, so user can select time without triggering onChange\n // Used only with dateTime type and no range\n const [singleTempDate, setSingleTempDate] = useState<Date>();\n\n // Temporary inner storage for range state.\n const [rangeStep, setRangeStep] = useState<RangeSelectionStep>('startDate');\n const [rangeStartDate, setRangeStartDate] = useState<Date>();\n const [rangeEndDate, setRangeEndDate] = useState<Date>();\n\n const isTimeRange = type === 'dateTime' && !!range;\n\n const [rangeEndHoveredDate, setRangeEndHoveredDate] = useState<Date>();\n\n const clearInnerState = useCallback(() => {\n setSingleTempDate(undefined);\n setRangeStep('startDate');\n setRangeStartDate(undefined);\n setRangeEndDate(undefined);\n }, []);\n\n const open = useCallback(() => setIsOpen(true), []);\n const close = useCallback(() => {\n clearInnerState();\n setIsOpen(false);\n }, [clearInnerState]);\n\n const currentValue = useMemo(() => {\n if (range) {\n return undefined;\n } else {\n return singleTempDate || (value as Date);\n }\n }, [range, singleTempDate, value]);\n\n const currentTimepickerValue = useMemo(() => {\n if (isTimeRange && (rangeStep === 'startTime' || rangeStep === 'endTime')) {\n return rangeEndDate || rangeStartDate;\n } else if (currentValue && !Array.isArray(currentValue)) {\n return currentValue as Date;\n }\n\n return undefined;\n }, [isTimeRange, rangeStep, currentValue, rangeEndDate, rangeStartDate]);\n\n const handleTimeRangeChange = useCallback((value: Date, step: RangeSelectionStep) => {\n if (step === 'startDate' || step === 'startTime') {\n setRangeStep('startTime');\n setRangeStartDate(value);\n setRangeEndDate(undefined);\n } else if (step === 'endDate' || step === 'endTime') {\n setRangeStep('endTime');\n setRangeEndDate(value);\n }\n\n timePickerImperativeHandle.current?.flash();\n }, []);\n\n const handleRangeChange = useCallback(\n (\n value: Date,\n rangeStartDate: Date | undefined,\n step: RangeSelectionStep,\n type: DatePickerType\n ): [Date, Date] | undefined => {\n if (step === 'endDate') {\n const endOfPeriod = moment(value)\n .endOf(type === 'month' ? 'month' : 'day')\n .toDate();\n const minDate = getMinDate(endOfPeriod, rangeStartDate);\n const maxDate = getMaxDate(endOfPeriod, rangeStartDate);\n\n return minDate && maxDate ? [minDate, maxDate] : undefined;\n } else if (step === 'startDate') {\n setRangeStartDate(value);\n setRangeEndDate(undefined);\n setRangeStep('endDate');\n }\n\n return undefined;\n },\n []\n );\n\n const onDateChange = useCallback<CalendarGridProps['onChange']>(\n newValue => {\n if (Array.isArray(newValue) || !newValue) {\n throw new Error('Value is array or `null`, but should not be');\n }\n\n // dateTimeRange\n if (isTimeRange) {\n handleTimeRangeChange(newValue, rangeStep);\n }\n // Regular dateTime\n else if (type === 'dateTime') {\n setSingleTempDate(newValue);\n timePickerImperativeHandle.current?.flash();\n }\n // Regular range\n else if (range) {\n const range = handleRangeChange(newValue, rangeStartDate, rangeStep, type);\n if (range) {\n (onChange as DatePickerChangeHandler<true>)?.(range);\n close();\n }\n }\n // Single date\n else if (!range && newValue) {\n (onChange as DatePickerChangeHandler<false>)?.(newValue as Date);\n close();\n }\n },\n [\n isTimeRange,\n type,\n range,\n handleTimeRangeChange,\n rangeStep,\n handleRangeChange,\n rangeStartDate,\n onChange,\n close,\n ]\n );\n\n const onTimeChange = useCallback(\n (offsetSeconds: number) => {\n if (isTimeRange) {\n if (rangeStep === 'startTime') {\n setRangeStep('endDate');\n setRangeStartDate(prev => prev && applyOffsetSeconds(prev, offsetSeconds));\n } else if (rangeStep === 'endTime' && rangeEndDate && rangeStartDate) {\n const endDate = applyOffsetSeconds(rangeEndDate, offsetSeconds);\n\n const returnValue: [Date, Date] =\n rangeStartDate < endDate ? [rangeStartDate, endDate] : [endDate, rangeStartDate];\n\n (onChange as DatePickerChangeHandler<true>)?.(returnValue);\n close();\n }\n } else if (currentValue && !Array.isArray(currentValue)) {\n const newValue = applyOffsetSeconds(currentValue, offsetSeconds);\n (onChange as DatePickerChangeHandler<false>)?.(newValue);\n close();\n }\n },\n [isTimeRange, currentValue, rangeStep, rangeEndDate, rangeStartDate, onChange, close]\n );\n\n useEffect(() => {\n if (isOpen) {\n const isValuesArray = Array.isArray(value);\n\n setActiveStartDate(getActiveStartDate({ maxDate, minDate, value }));\n\n if (range && isValuesArray && value[0] && value[1]) {\n setRangeStartDate(value[0]);\n setRangeEndDate(value[1]);\n setRangeStep('startDate');\n }\n }\n }, [isOpen, value, minDate, maxDate, range]);\n\n return (\n <>\n <Input\n open={open}\n isOpen={isOpen}\n className={className}\n testId={testId}\n value={value}\n label={label}\n placeholder={placeholder}\n ref={fieldRef}\n format={format}\n range={range}\n type={type}\n setValue={onChange as (value: Date | [Date, Date] | undefined) => void}\n readOnly={readOnly}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n isNext={isNext}\n clearable={clearable}\n />\n\n {activeStartDate && (\n <Popover\n anchorEl={fieldRef.current}\n onClose={close}\n open={isOpen}\n className={styles.popover}\n >\n <div>\n <CalendarControls\n date={activeStartDate}\n setDate={setActiveStartDate}\n minDate={minDate}\n maxDate={maxDate}\n view={type === 'month' ? 'year' : 'month'}\n className={styles.controls}\n />\n <CalendarGrid\n onChange={onDateChange}\n activeStartDate={activeStartDate}\n view={type === 'month' ? 'year' : 'month'}\n maxDate={maxDate}\n minDate={minDate}\n tileDisabled={getTileDisabled}\n selected={currentValue}\n rangeStartDate={rangeStartDate}\n rangeEndDate={rangeEndDate}\n rangeHoveredDate={rangeStep === 'endDate' ? rangeEndHoveredDate : undefined}\n setHoveredDate={setRangeEndHoveredDate}\n getTileClassName={getTileClassName}\n className={styles.grid}\n />\n </div>\n {type === 'dateTime' && (\n <TimePicker\n value={currentTimepickerValue}\n onChange={onTimeChange}\n ref={timePickerImperativeHandle}\n />\n )}\n </Popover>\n )}\n </>\n );\n};\n\nexport type DatePickerProps<IsRange extends boolean | undefined = false> = Omit<\n DatePickerBaseProps<IsRange>,\n 'labelPlacement' | 'size' | 'elementsClassNames' | 'isNext'\n>;\n\n// Attempting to properly type exported component by explicitly stating generic call signature\n// See https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-types for details\ntype DatePickerBaseType = {\n <IsRange extends boolean | undefined = false>(props: DatePickerProps<IsRange>): ReactElement;\n Controls: typeof CalendarControls;\n Grid: typeof CalendarGrid;\n};\n\nconst DatePickerOldBase = <IsRange extends boolean | undefined = false>(\n props: DatePickerProps<IsRange>\n) => DatePickerBase({ ...props, isNext: false });\nDatePickerOldBase.Controls = CalendarControls;\nDatePickerOldBase.Grid = CalendarGrid;\n/**\n * @deprecated use `DatePickerNext`, and see migration guide for `TextInputNext` for details\n */\nexport const DatePicker = DatePickerOldBase as DatePickerBaseType;\n\nexport type DatePickerNextProps<IsRange extends boolean | undefined = false> = Omit<\n DatePickerBaseProps<IsRange>,\n 'isNext'\n>;\n\ntype DatePickerNextBaseType = {\n <IsRange extends boolean | undefined = false>(props: DatePickerNextProps<IsRange>): ReactElement;\n Controls: typeof CalendarControls;\n Grid: typeof CalendarGrid;\n};\n\nconst DatePickerNextBase = <IsRange extends boolean | undefined = false>(\n props: DatePickerProps<IsRange>\n) => DatePickerBase({ ...props, isNext: true });\nDatePickerNextBase.Controls = CalendarControls;\nDatePickerNextBase.Grid = CalendarGrid;\nexport const DatePickerNext = DatePickerNextBase as DatePickerNextBaseType;\n"],"names":["getActiveStartDate","_ref","value","minDate","maxDate","startDate","Array","isArray","Date","getTime","DatePickerBase","_ref2","label","className","testId","onChange","readOnly","_ref2$type","type","range","getTileClassName","getTileDisabled","placeholder","format","_ref2$focusOnClear","focusOnClear","_ref2$labelPlacement","labelPlacement","_ref2$size","size","elementsClassNames","isNext","_ref2$clearable","clearable","fieldRef","useRef","timePickerImperativeHandle","useState","_useState2","_slicedToArray","_useState","isOpen","setIsOpen","_useState4","_useState3","activeStartDate","setActiveStartDate","_useState5","_useState6","singleTempDate","setSingleTempDate","_useState8","_useState7","rangeStep","setRangeStep","_useState9","_useState10","rangeStartDate","setRangeStartDate","_useState11","_useState12","rangeEndDate","setRangeEndDate","isTimeRange","_useState13","_useState14","rangeEndHoveredDate","setRangeEndHoveredDate","clearInnerState","useCallback","undefined","open","close","currentValue","useMemo","currentTimepickerValue","handleTimeRangeChange","step","_timePickerImperative","current","flash","handleRangeChange","endOfPeriod","moment","endOf","toDate","getMinDate","getMaxDate","onDateChange","newValue","Error","_timePickerImperative2","onTimeChange","offsetSeconds","prev","applyOffsetSeconds","endDate","useEffect","isValuesArray","_jsxs","_Fragment","children","_jsx","Input","ref","setValue","Popover","anchorEl","onClose","styles","popover","CalendarControls","date","setDate","view","controls","CalendarGrid","tileDisabled","selected","rangeHoveredDate","setHoveredDate","grid","TimePicker","DatePickerOldBase","props","Controls","Grid","DatePicker","DatePickerNextBase","DatePickerNext"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../src/componentsV2/DatePicker/DatePicker.tsx"],"sourcesContent":["import { ReactElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport moment from 'moment';\n\nimport { Popover } from '../Popover';\nimport { TextInputNextProps } from '../TextInputNext';\n\nimport { CalendarControls } from './CalendarControls';\nimport { Input } from './Input';\nimport {\n DatePickerChangeHandler,\n DatePickerType,\n DatePickerValue,\n getDateWithSameTime,\n getMaxDate,\n getMinDate,\n isSameDay,\n RangeSelectionStep,\n} from './utils';\nimport { CalendarGrid, CalendarGridProps } from './CalendarGrid';\nimport { TimePicker } from './TimePicker';\n\nimport styles from './DatePicker.scss';\n\ntype DatePickerBaseProps<IsRange extends boolean | undefined = false> = {\n label?: ReactNode;\n placeholder?: string;\n value?: DatePickerValue<IsRange>;\n onChange?: DatePickerChangeHandler<IsRange>;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * maximum selectable date\n */\n maxDate?: Date;\n /**\n * Type: dates only / date + time / month\n */\n type?: DatePickerType;\n range?: IsRange;\n /**\n * Function that returns a classname / list of classnames for custom styling of date tiles\n */\n getTileClassName?: (args: { activeStartDate: Date; date: Date }) => string;\n /**\n * Returns whether a tile should be disabled. Is ***not*** meant as an alternative method of providing `minDate` or `maxDate`\n */\n getTileDisabled?: (args: { activeStartDate: Date; date: Date }) => boolean;\n /**\n * Determines how the date will be displayed and how user's input will be parsed\n */\n format?: string;\n /**\n * If `true` - disables user input\n */\n readOnly?: boolean;\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n className?: string;\n testId?: string;\n\n // TODO remove when next becomes baseline\n isNext: boolean;\n};\n\n/**\n * Returns start date for calendar. Must return `value` if it falls into min-max range.\n */\nexport const getActiveStartDate = <IsRange extends boolean | undefined = false>({\n value,\n minDate,\n maxDate,\n}: Pick<DatePickerBaseProps<IsRange>, 'value' | 'minDate' | 'maxDate'>) => {\n const isValuesArray = Array.isArray(value);\n\n // Setting viewed time period\n const maybeStartDate = isValuesArray ? value[0] : (value as Date | undefined);\n const startDate = maybeStartDate || new Date();\n\n if (minDate && startDate.getTime() < minDate.getTime()) {\n return minDate;\n } else if (maxDate && startDate.getTime() > maxDate.getTime()) {\n return maxDate;\n }\n\n return startDate;\n};\n\nconst DatePickerBase = <IsRange extends boolean | undefined = false>({\n label,\n value,\n maxDate,\n minDate,\n className,\n testId,\n onChange,\n readOnly,\n type = 'date',\n range,\n getTileClassName,\n getTileDisabled,\n placeholder,\n format,\n focusOnClear = true,\n labelPlacement = 'top',\n size = 'small',\n elementsClassNames,\n isNext,\n clearable = true,\n}: DatePickerBaseProps<IsRange>) => {\n const fieldRef = useRef<HTMLDivElement>(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const [activeStartDate, setActiveStartDate] = useState<Date>(\n getActiveStartDate({ maxDate, minDate, value })\n );\n\n // Temporary inner storage for dateTime, so user can select time without triggering onChange\n // Used only with dateTime type and no range\n const [singleTempDate, setSingleTempDate] = useState<Date>();\n\n // Temporary inner storage for range state.\n const [rangeStep, setRangeStep] = useState<RangeSelectionStep>('startDate');\n const [rangeStartDate, setRangeStartDate] = useState(Array.isArray(value) ? value[0] : undefined);\n const [rangeEndDate, setRangeEndDate] = useState(Array.isArray(value) ? value[1] : undefined);\n\n const isTimeRange = type === 'dateTime' && !!range;\n\n const clearInnerState = useCallback(() => {\n setSingleTempDate(undefined);\n setRangeStep('startDate');\n // setRangeStartDate(undefined);\n // setRangeEndDate(undefined);\n }, []);\n\n const open = useCallback(() => {\n if (!isOpen) {\n clearInnerState();\n setIsOpen(true);\n }\n }, [clearInnerState, isOpen]);\n\n const close = useCallback(() => {\n clearInnerState();\n setIsOpen(false);\n }, [clearInnerState]);\n\n const onPopoverClose = useCallback(() => {\n if (\n range &&\n rangeStartDate &&\n rangeEndDate &&\n (rangeStartDate.getTime() !== (value as [Date, Date])?.[0]?.getTime() ||\n rangeEndDate.getTime() !== (value as [Date, Date])?.[1]?.getTime())\n ) {\n (onChange as DatePickerChangeHandler<true>)?.(\n rangeStartDate < rangeEndDate\n ? [rangeStartDate, rangeEndDate]\n : [rangeEndDate, rangeStartDate]\n );\n } else if (singleTempDate && singleTempDate.getTime() !== (value as Date)?.getTime()) {\n (onChange as DatePickerChangeHandler<false>)?.(singleTempDate);\n }\n close();\n }, [close, onChange, range, rangeEndDate, rangeStartDate, singleTempDate, value]);\n\n const currentValue = useMemo(() => {\n if (range) {\n return rangeStep === 'startDate' ? rangeStartDate : rangeEndDate;\n } else {\n return singleTempDate || (value as Date);\n }\n }, [range, rangeEndDate, rangeStartDate, rangeStep, singleTempDate, value]);\n\n const changeRangeStep = useCallback(\n (step: RangeSelectionStep) => {\n if (step === 'startDate' && rangeStartDate) {\n setActiveStartDate(rangeStartDate);\n } else if (rangeEndDate) {\n setActiveStartDate(rangeEndDate);\n }\n setRangeStep(step);\n },\n [rangeEndDate, rangeStartDate]\n );\n\n const handleTimeRangeChange = useCallback((newValue: Date, step: RangeSelectionStep) => {\n if (step === 'startDate') {\n setRangeStartDate(current => getDateWithSameTime(newValue, current));\n } else if (step === 'endDate') {\n setRangeEndDate(current => getDateWithSameTime(newValue, current));\n }\n }, []);\n\n const handleRangeChange = useCallback(\n (\n value: Date,\n rangeStartDate: Date | undefined,\n step: RangeSelectionStep,\n type: DatePickerType\n ): [Date, Date] | undefined => {\n if (step === 'endDate') {\n const endOfPeriod = moment(value)\n .endOf(type === 'month' ? 'month' : 'day')\n .toDate();\n const minDate = getMinDate(endOfPeriod, rangeStartDate);\n const maxDate = getMaxDate(endOfPeriod, rangeStartDate);\n\n return minDate && maxDate ? [minDate, maxDate] : undefined;\n } else if (step === 'startDate') {\n setRangeStartDate(value);\n changeRangeStep('endDate');\n }\n\n return undefined;\n },\n [changeRangeStep]\n );\n\n const onDateChange = useCallback<CalendarGridProps['onChange']>(\n newValue => {\n // dateTimeRange\n if (isTimeRange) {\n handleTimeRangeChange(newValue, rangeStep);\n }\n // Regular dateTime\n else if (type === 'dateTime') {\n setSingleTempDate(getDateWithSameTime(newValue, currentValue));\n }\n // Regular range\n else if (range) {\n const range = handleRangeChange(newValue, rangeStartDate, rangeStep, type);\n\n if (range) {\n (onChange as DatePickerChangeHandler<true>)?.(range);\n close();\n }\n }\n // Single date\n else if (!range) {\n (onChange as DatePickerChangeHandler<false>)?.(newValue as Date);\n close();\n }\n },\n [\n isTimeRange,\n type,\n range,\n handleTimeRangeChange,\n rangeStep,\n currentValue,\n handleRangeChange,\n rangeStartDate,\n onChange,\n close,\n ]\n );\n\n const onTimeChange = useCallback(\n (newValue: Date) => {\n if (isTimeRange) {\n if (rangeStep === 'startDate') {\n setRangeStartDate(newValue);\n } else {\n setRangeEndDate(newValue);\n }\n } else if (currentValue) {\n setSingleTempDate(newValue);\n }\n },\n [isTimeRange, currentValue, rangeStep]\n );\n\n const saveTime = useCallback(() => {\n if (isTimeRange) {\n if (rangeStep === 'startDate') {\n changeRangeStep('endDate');\n } else if (rangeStartDate && rangeEndDate) {\n const returnValue: [Date, Date] =\n rangeStartDate < rangeEndDate\n ? [rangeStartDate, rangeEndDate]\n : [rangeEndDate, rangeStartDate];\n\n (onChange as DatePickerChangeHandler<true>)?.(returnValue);\n close();\n }\n } else if (currentValue) {\n (onChange as DatePickerChangeHandler<false>)?.(currentValue);\n close();\n }\n }, [\n changeRangeStep,\n close,\n currentValue,\n isTimeRange,\n onChange,\n rangeEndDate,\n rangeStartDate,\n rangeStep,\n ]);\n\n const goToToday = useMemo(() => {\n const today = new Date();\n const startDate = getActiveStartDate({ maxDate, minDate, value: today });\n\n return isOpen && isSameDay(startDate, today) ? () => setActiveStartDate(startDate) : undefined;\n }, [isOpen, maxDate, minDate]);\n\n const clearCurrentStep = useMemo(() => {\n if (\n (rangeStep === 'startDate' && !rangeStartDate) ||\n (rangeStep === 'endDate' && !rangeEndDate)\n ) {\n return undefined;\n }\n\n return () => {\n if (rangeStep === 'startDate') {\n setRangeStartDate(undefined);\n } else {\n setRangeEndDate(undefined);\n }\n\n setActiveStartDate(getActiveStartDate({ maxDate, minDate }));\n };\n }, [maxDate, minDate, rangeEndDate, rangeStartDate, rangeStep]);\n\n useEffect(() => {\n if (isOpen) {\n setActiveStartDate(getActiveStartDate({ maxDate, minDate, value }));\n }\n\n const isValuesArray = Array.isArray(value);\n\n if (range /* && isValuesArray && value[0] && value[1] */) {\n setRangeStartDate(isValuesArray ? value[0] : undefined);\n setRangeEndDate(isValuesArray ? value[1] : undefined);\n setRangeStep('startDate');\n }\n }, [isOpen, value, minDate, maxDate, range]);\n\n return (\n <>\n <Input\n open={open}\n isOpen={isOpen}\n className={className}\n testId={testId}\n value={range ? [rangeStartDate, rangeEndDate] : value}\n label={label}\n placeholder={placeholder}\n ref={fieldRef}\n format={format}\n range={range}\n rangeStep={rangeStep}\n setRangeStep={changeRangeStep}\n type={type}\n setValue={onChange as (value: Date | [Date, Date] | undefined) => void}\n readOnly={readOnly}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n isNext={isNext}\n clearable={clearable}\n />\n\n {activeStartDate && (\n <Popover\n anchorEl={fieldRef.current}\n onClose={onPopoverClose}\n open={isOpen}\n className={styles.popover}\n popperClassName={styles.popper}\n >\n <CalendarControls\n date={activeStartDate}\n setDate={setActiveStartDate}\n minDate={minDate}\n maxDate={maxDate}\n view={type === 'month' ? 'year' : 'month'}\n className={styles.controls}\n />\n\n <CalendarGrid\n onChange={onDateChange}\n activeStartDate={activeStartDate}\n view={type === 'month' ? 'year' : 'month'}\n maxDate={maxDate}\n minDate={minDate}\n tileDisabled={getTileDisabled}\n selected={currentValue}\n getTileClassName={getTileClassName}\n className={styles.grid}\n />\n\n {type === 'dateTime' && (\n <TimePicker\n value={currentValue}\n onChange={onTimeChange}\n maxDate={maxDate}\n minDate={minDate}\n clear={clearCurrentStep}\n goToToday={goToToday}\n saveTime={saveTime}\n />\n )}\n </Popover>\n )}\n </>\n );\n};\n\nexport type DatePickerProps<IsRange extends boolean | undefined = false> = Omit<\n DatePickerBaseProps<IsRange>,\n 'labelPlacement' | 'size' | 'elementsClassNames' | 'isNext'\n>;\n\n// Attempting to properly type exported component by explicitly stating generic call signature\n// See https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-types for details\ntype DatePickerBaseType = {\n <IsRange extends boolean | undefined = false>(props: DatePickerProps<IsRange>): ReactElement;\n Controls: typeof CalendarControls;\n Grid: typeof CalendarGrid;\n};\n\nconst DatePickerOldBase = <IsRange extends boolean | undefined = false>(\n props: DatePickerProps<IsRange>\n) => DatePickerBase({ ...props, isNext: false });\nDatePickerOldBase.Controls = CalendarControls;\nDatePickerOldBase.Grid = CalendarGrid;\n/**\n * @deprecated use `DatePickerNext`, and see migration guide for `TextInputNext` for details\n */\nexport const DatePicker = DatePickerOldBase as DatePickerBaseType;\n\nexport type DatePickerNextProps<IsRange extends boolean | undefined = false> = Omit<\n DatePickerBaseProps<IsRange>,\n 'isNext'\n>;\n\ntype DatePickerNextBaseType = {\n <IsRange extends boolean | undefined = false>(props: DatePickerNextProps<IsRange>): ReactElement;\n Controls: typeof CalendarControls;\n Grid: typeof CalendarGrid;\n};\n\nconst DatePickerNextBase = <IsRange extends boolean | undefined = false>(\n props: DatePickerProps<IsRange>\n) => DatePickerBase({ ...props, isNext: true });\nDatePickerNextBase.Controls = CalendarControls;\nDatePickerNextBase.Grid = CalendarGrid;\nexport const DatePickerNext = DatePickerNextBase as DatePickerNextBaseType;\n"],"names":["getActiveStartDate","_ref","value","minDate","maxDate","startDate","Array","isArray","Date","getTime","DatePickerBase","_ref2","label","className","testId","onChange","readOnly","_ref2$type","type","range","getTileClassName","getTileDisabled","placeholder","format","_ref2$focusOnClear","focusOnClear","_ref2$labelPlacement","labelPlacement","_ref2$size","size","elementsClassNames","isNext","_ref2$clearable","clearable","fieldRef","useRef","useState","_useState2","_slicedToArray","_useState","isOpen","setIsOpen","_useState4","_useState3","activeStartDate","setActiveStartDate","_useState5","_useState6","singleTempDate","setSingleTempDate","_useState8","_useState7","rangeStep","setRangeStep","_useState9","undefined","_useState10","rangeStartDate","setRangeStartDate","_useState11","_useState12","rangeEndDate","setRangeEndDate","isTimeRange","clearInnerState","useCallback","open","close","onPopoverClose","_","_2","currentValue","useMemo","changeRangeStep","step","handleTimeRangeChange","newValue","current","getDateWithSameTime","handleRangeChange","endOfPeriod","moment","endOf","toDate","getMinDate","getMaxDate","onDateChange","onTimeChange","saveTime","goToToday","today","isSameDay","clearCurrentStep","useEffect","isValuesArray","_jsxs","_Fragment","children","_jsx","Input","ref","setValue","Popover","anchorEl","onClose","styles","popover","popperClassName","popper","CalendarControls","date","setDate","view","controls","CalendarGrid","tileDisabled","selected","grid","TimePicker","clear","DatePickerOldBase","props","Controls","Grid","DatePicker","DatePickerNextBase","DatePickerNext"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import o from'./../../ext-esm/style-inject/dist/style-inject.es.js';var e={spacing:"8",popover:"DatePicker_popover__sSk1S",controls:"DatePicker_controls__Hb-Sw",grid:"DatePicker_grid__c37ss"};o(".DatePicker_popover__sSk1S{box-shadow:0 8px 24px 0 rgba(0,0,0,.24)!important;display:flex;flex-flow:row nowrap;margin:8px 0;overflow:visible}.DatePicker_controls__Hb-Sw{border-bottom:2px solid var(--palette-background-b-4);padding-bottom:6px}.DatePicker_grid__c37ss{margin:0 auto}");export{e as default};
1
+ import e from'./../../ext-esm/style-inject/dist/style-inject.es.js';var o={spacing:"8",popover:"DatePicker_popover__sSk1S",popper:"DatePicker_popper__BAftf",controls:"DatePicker_controls__Hb-Sw",grid:"DatePicker_grid__c37ss"};e(".DatePicker_popover__sSk1S{box-shadow:0 8px 24px 0 rgba(0,0,0,.24)!important;margin:8px 0;overflow:visible;width:296px}.DatePicker_popper__BAftf{z-index:calc(var(--z-index-modal) + 2)}.DatePicker_controls__Hb-Sw{border-bottom:2px solid var(--palette-background-b-4);padding-bottom:6px}.DatePicker_grid__c37ss{margin:0 auto}");export{o as default};
2
2
  //# sourceMappingURL=DatePicker.scss.js.map
@@ -1,8 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { TextInputNextProps } from '../../TextInputNext';
3
- import { DatePickerType } from '../utils';
3
+ import { DatePickerType, RangeSelectionStep } from '../utils';
4
4
  export type InputProps = {
5
- value?: Date | [Date, Date];
5
+ value?: Date | [Date | undefined, Date | undefined];
6
6
  setValue?: (value: Date | [Date, Date] | undefined) => void;
7
7
  label?: ReactNode;
8
8
  placeholder?: string;
@@ -10,6 +10,8 @@ export type InputProps = {
10
10
  type: DatePickerType;
11
11
  format?: string;
12
12
  range?: boolean;
13
+ rangeStep?: RangeSelectionStep;
14
+ setRangeStep: (step: RangeSelectionStep) => void;
13
15
  readOnly?: boolean;
14
16
  focusOnClear?: boolean;
15
17
  labelPlacement?: TextInputNextProps['labelPlacement'];
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,SAAS,EAAiC,MAAM,OAAO,CAAC;AAGhG,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAGL,cAAc,EAKf,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAC5D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,eAAO,MAAM,KAAK,uGA8IjB,CAAC"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAOV,MAAM,OAAO,CAAC;AAIf,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAGL,cAAc,EAId,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAOlB,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAC5D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AA+BF,eAAO,MAAM,KAAK,uGA2OjB,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/slicedToArray";import s from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as n,useRef as i,useCallback as t}from"react";import r from"moment";import{TextInputNext as m}from"../../TextInputNext/TextInputNext.js";import{TextInput as e}from"../../TextInput/TextInput.js";import{autocompleteValue as u,getMinDate as p,getMaxDate as a,InputParseFormats as l,getDefaultFormat as I}from"../utils.js";import{CalendarThreeIcon as j}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsx as d}from"react/jsx-runtime";var f=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return r(o).format(s)})).join(" - ")},C=function(o,c,n){var i=r(o,[c].concat(s(l[n]||[])),!0);return i.isValid()?i.toDate():void 0},v=c((function(s,c){var r=s.value,l=s.label,v=s.open,h=s.className,b=s.testId,O=s.format,F=s.placeholder,x=s.range,A=s.readOnly,g=s.type,y=s.setValue,P=s.focusOnClear,N=s.labelPlacement,k=s.size,M=s.elementsClassNames,T=s.isNext,D=s.isOpen,R=s.clearable,S=O||I(g,x),z=n(f(r,S)),B=o(z,2),E=B[0],G=B[1],U=n(r),L=o(U,2),V=L[0],q=L[1],W=i(E);if(V!==r){var K=f(r,S);G(K),q(r),W.current=K}var Z=t((function(o){if(""===o.trim())return null==y||y(void 0),G(""),void(W.current="");var s=u({type:g,range:x,value:o,prevValue:W.current});if(W.current=s,G(s),x){var c=s.split(/[-–—]/).map((function(o){return C(o.trim(),S,g)})).filter((function(o){return!!o}));if(2===c.length){var n=p(c[0],c[1]),i=a(c[0],c[1]);n&&i&&(null==y||y([n,i]))}}else{var t=C(s,S,g);t&&(null==y||y(t))}}),[S,x,y,g]),w=t((function(o){o.target.select(),v()}),[v]),H=t((function(){G(f(r,S)),W.current=""}),[r,S]),J=t((function(){null==y||y(void 0),G("")}),[y]);return T?d(m,{value:E,inputContainerRef:c,label:l,onFocus:w,onBlur:H,className:h,testId:b,suffix:d(j,{}),placeholder:F,onChange:Z,readOnly:A,clearable:R,focusOnClear:P,labelPlacement:N,size:k,elementsClassNames:M}):d(e,{value:E,ref:c,label:l,onFocus:v,onBlur:H,forceLabelShrink:D,className:h,testId:b,suffix:d(j,{}),placeholder:F,onChange:Z,readOnly:A,onClear:R?J:void 0,focusOnClear:P})}));export{v as Input};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
2
2
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import { FocusEventHandler, forwardRef, ReactNode, useCallback, useRef, useState } from 'react';\nimport moment from 'moment';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n InputParseFormats,\n} from '../utils';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date, Date];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst formatValue = (value: Date | [Date, Date] | undefined, format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => moment(item).format(format))\n .join(' - ');\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size,\n elementsClassNames,\n isNext,\n isOpen,\n clearable,\n },\n ref\n ) => {\n const actualFormat = format || getDefaultFormat(type, range);\n const [inputValue, setInputValue] = useState(formatValue(value, actualFormat));\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n const newInputValue = formatValue(value, actualFormat);\n setInputValue(newInputValue);\n setPrevValue(value);\n prevInputValueRef.current = newInputValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), actualFormat, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, actualFormat, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [actualFormat, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, actualFormat));\n prevInputValueRef.current = '';\n }, [value, actualFormat]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n if (isNext) {\n return (\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n />\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["formatValue","value","format","Array","isArray","filter","item","map","moment","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","Input","forwardRef","_ref","ref","label","open","className","testId","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","size","elementsClassNames","isNext","isOpen","clearable","actualFormat","getDefaultFormat","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","newInputValue","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","TextInput","forceLabelShrink"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n forwardRef,\n ReactNode,\n UIEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n InputParseFormats,\n} from '../utils';\nimport { Popper } from '../../Popper';\n\nimport styles from './Input.scss';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date | undefined, Date | undefined];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n rangeStep?: RangeSelectionStep;\n setRangeStep: (step: RangeSelectionStep) => void;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst rangeOverlayPopperModifiers = {\n flip: {\n enabled: false,\n },\n};\n\nconst RangeSeparator = ' - ';\n\nconst formatValuePart = (value: Date | undefined, format: string) =>\n value ? moment(value).format(format) : format;\n\nconst formatValue = (value: InputProps['value'], format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => formatValuePart(item, format))\n .join(RangeSeparator);\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nconst SizeToOverlayClassMap: Record<Required<TextInputNextProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format: propsFormat,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size = 'small',\n elementsClassNames: propsElementsClassNames,\n isNext,\n isOpen,\n clearable,\n rangeStep,\n setRangeStep,\n },\n ref\n ) => {\n const format = propsFormat || getDefaultFormat(type, range);\n const formattedValue = formatValue(value, format);\n const [inputValue, setInputValue] = useState(formattedValue);\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n const [inputScroll, setinputScroll] = useState(0);\n const [inputWidth, setInputWidth] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const showRangeOverlay = !!range && inputValue === formattedValue && isOpen;\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n setInputValue(formattedValue);\n setPrevValue(value);\n prevInputValueRef.current = formattedValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), format, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, format, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [format, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, format));\n prevInputValueRef.current = '';\n }, [value, format]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n const elementsClassNames = useMemo(\n () => ({\n ...propsElementsClassNames,\n prefix: classNames(propsElementsClassNames?.prefix, showRangeOverlay && styles.prefix),\n input: classNames(\n propsElementsClassNames?.input,\n showRangeOverlay && styles.rangeDefaultValue\n ),\n inputContainer: classNames(propsElementsClassNames?.inputContainer, styles.inputContainer),\n }),\n [showRangeOverlay, propsElementsClassNames]\n );\n\n const htmlAttributes = useMemo<{ onScroll: UIEventHandler<HTMLInputElement> } | undefined>(\n () =>\n range\n ? {\n onScroll: e => {\n setinputScroll(e.currentTarget.scrollLeft);\n },\n }\n : undefined,\n [range]\n );\n\n useEffect(() => {\n if (!range) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => setInputWidth(entry.borderBoxSize?.[0]?.inlineSize || 0));\n });\n\n if (inputRef.current) {\n resizeObserver.observe(inputRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [range]);\n\n if (isNext) {\n return (\n <>\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n inputRef={inputRef}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n />\n\n <Popper\n anchorEl={inputRef.current}\n open={showRangeOverlay}\n placement=\"top-start\"\n className={styles.popper}\n modifiers={rangeOverlayPopperModifiers}\n >\n <div\n className={classNames(styles.rangeOverlay, SizeToOverlayClassMap[size])}\n style={{ width: inputWidth }}\n >\n <div style={{ marginLeft: -inputScroll }}>\n {Array.isArray(value) && value.length === 2 && (\n <>\n <span\n className={classNames(\n styles.rangePart,\n\n rangeStep === 'startDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('startDate')}\n >\n {formatValuePart(value[0], format)}\n </span>\n {RangeSeparator}\n <span\n className={classNames(\n styles.rangePart,\n rangeStep === 'endDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('endDate')}\n >\n {formatValuePart(value[1], format)}\n </span>\n </>\n )}\n </div>\n </div>\n </Popper>\n </>\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["rangeOverlayPopperModifiers","flip","enabled","formatValuePart","value","format","moment","formatValue","Array","isArray","filter","item","map","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","SizeToOverlayClassMap","small","styles","medium","large","Input","forwardRef","_ref","ref","label","open","className","testId","propsFormat","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","_ref$size","size","propsElementsClassNames","elementsClassNames","isNext","isOpen","clearable","rangeStep","setRangeStep","getDefaultFormat","formattedValue","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","_useState6","_useState5","inputScroll","setinputScroll","_useState8","_useState7","inputWidth","setInputWidth","inputRef","showRangeOverlay","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","useMemo","_objectSpread","prefix","classNames","input","rangeDefaultValue","inputContainer","htmlAttributes","onScroll","currentTarget","scrollLeft","useEffect","resizeObserver","ResizeObserver","entries","forEach","entry","_entry$borderBoxSize","_entry$borderBoxSize$","borderBoxSize","inlineSize","observe","disconnect","_jsxs","_Fragment","children","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","Popper","anchorEl","placement","popper","modifiers","rangeOverlay","style","width","marginLeft","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import e from'./../../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",prefix:"Input_prefix__UeYRz",inputContainer:"Input_inputContainer__tWP1-",rangeDefaultValue:"Input_rangeDefaultValue__IjFwV",popper:"Input_popper__hWvEc",rangeOverlay:"Input_rangeOverlay__dJE2j",small:"Input_small__-lDaR",medium:"Input_medium__nWso1",large:"Input_large__ay9YB",rangePart:"Input_rangePart__kzqAc",rangePartActive:"Input_rangePartActive__zNF-7"};e(".Input_prefix__UeYRz{margin-left:-8px}.Input_inputContainer__tWP1-{position:relative}.Input_rangeDefaultValue__IjFwV{caret-color:var(--corvaui-textinput-valuecolor);color:transparent}.Input_popper__hWvEc{z-index:calc(var(--z-index-modal) + 1)}.Input_rangeOverlay__dJE2j{color:var(--corvaui-textinput-valuecolor);font-family:inherit;font-size:inherit;font-weight:400;letter-spacing:0;overflow:hidden;pointer-events:none;transform:translateY(100%);white-space:pre}.Input_small__-lDaR{font-size:14px;line-height:18px}.Input_medium__nWso1{font-size:16px;line-height:22px}.Input_large__ay9YB{font-size:16px;line-height:26px}.Input_rangePart__kzqAc{cursor:pointer;pointer-events:all}.Input_rangePartActive__zNF-7{color:var(--palette-primary-main)}");export{t as default};
2
+ //# sourceMappingURL=Input.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,aAAa,yDAA4D;"}
@@ -1,9 +1,11 @@
1
1
  export type TimePickerProps = {
2
2
  value?: Date;
3
- onChange: (offset: number) => void;
3
+ onChange: (date: Date) => void;
4
+ saveTime: () => void;
5
+ maxDate?: Date;
6
+ minDate?: Date;
7
+ goToToday?: () => void;
8
+ clear?: () => void;
4
9
  };
5
- export type TimePickerImperativeHandle = {
6
- flash: () => void;
7
- };
8
- export declare const TimePicker: import("react").ForwardRefExoticComponent<TimePickerProps & import("react").RefAttributes<TimePickerImperativeHandle>>;
10
+ export declare const TimePicker: ({ value, onChange, minDate, maxDate, saveTime, goToToday, clear, }: TimePickerProps) => import("react/jsx-runtime").JSX.Element;
9
11
  //# sourceMappingURL=TimePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAgFA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,UAAU,wHAwHtB,CAAC"}
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAoBF,eAAO,MAAM,UAAU,uEAQpB,eAAe,4CAwRjB,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/slicedToArray";import{forwardRef as r,useState as n,useRef as o,useMemo as i,useEffect as a,useCallback as c,useImperativeHandle as s}from"react";import{padStart as f}from"lodash";import l from"classnames";import u from"moment";import{Tabs as m}from"../../Tabs/Tabs.js";import d from"./TimePicker.scss.js";import{jsxs as p,jsx as b}from"react/jsx-runtime";function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?v(Object(n),!0).forEach((function(r){e(t,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var O=new Array(48).fill(0).map((function(e,t){var r=new Date(2e3,0,1,0,15*t),n=r.getHours(),o=f(String(0===n?12:n),2,"0"),i=f(String(r.getMinutes()),2,"0");return{offset:900*t,title:"".concat(o,":").concat(i)}})),g=[{value:"am",label:"AM"},{value:"pm",label:"PM"}],y=function(e){var t=e.offset,r=e.title,n=e.setOffset,o=e.disabled,i=e.selected,a=c((function(){return n(t)}),[n,t]);return b("button",{"data-offset":t,"data-selected":String(i),className:l(d.button,o&&d.disabled,i&&d.selected),onClick:a,disabled:o,children:r})},j=r((function(e,r){var f=e.value,v=e.onChange,j=!f,P=n(),T=t(P,2),w=T[0],D=T[1],M=o(null),S=o(!1),N=n(),k=t(N,2),x=k[0],A=k[1],C=i((function(){return g.map((function(e){return h(h({},e),{},{disabled:j})}))}),[j]),H=i((function(){if(f){var e=u(f).startOf("day").toDate();return Math.ceil((f.getTime()-e.getTime())/1e3)}}),[f]);a((function(){D(void 0!==H?H>=43200?"pm":"am":void 0)}),[H]);var E=i((function(){return O.map((function(e){return h(h({},e),{},{offset:e.offset+("pm"===w?43200:0)})}))}),[w]);a((function(){setTimeout((function(){if(void 0!==H&&M.current&&!S.current){S.current=!1;var e=M.current.querySelector('[data-selected="true"]');if(e){var t=e.offsetTop,r=e.clientHeight,n=t-(M.current.clientHeight-r)/2;M.current.scrollTo({top:Math.max(n,0)})}}}),0)}),[H]),a((function(){var e;j&&(null===(e=M.current)||void 0===e||e.scrollTo({top:0}))}),[j]);var q=c((function(e){S.current=!0,v(e)}),[v]);return s(r,(function(){return{flash:function(){return A(1+Math.random())}}}),[]),p("div",{className:l(d.root,x&&d.flash),children:[b("div",{className:d.header,children:b(m,{size:"small",type:"secondary",items:C,value:w,onChange:D})}),b("div",{className:d.body,children:b("div",{className:l(d.buttons,j&&d.disabled),ref:M,children:E.map((function(e,t,r){var n=e.offset,o=e.title,i=t===r.length-1?n+900:r[t+1].offset;return b(y,{offset:n,title:o,disabled:j,setOffset:q,selected:void 0!==H&&H>=n&&H<i},n)}))})})]},x)}));export{j as TimePicker};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useRef as n,useMemo as c,useState as i,useEffect as t,useCallback as e}from"react";import r from"classnames";import m from"moment-timezone";import{padStart as u}from"lodash";import{TextInputNext as a}from"../../TextInputNext/TextInputNext.js";import{Text as l}from"../../Text/Text.js";import{ToggleButtons as p}from"../../ToggleButtons/ToggleButtons.js";import{isSameDay as d}from"../utils.js";import{Button as j}from"../../Button/Button.js";import I from"./TimePicker.scss.js";import{InfoIcon as f}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as h,Fragment as v,jsx as b}from"react/jsx-runtime";function g(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function O(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?g(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):g(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var C=[{value:"am",label:"AM"},{value:"pm",label:"PM"}],y=function(o){return o.replace(/[^\d]/g,"").substring(0,2)},T=function(o){return Number(o)>=0&&Number(o)<=12},N=function(o){return Number(o)>=0&&Number(o)<60},F=N,P=function(o){return o.getTime()-m(o).startOf("day").toDate().getTime()},D=function(o){return void 0!==o?u(String(o),2,"0"):""},M=function(o){return"12"===o?"00":o},x=function(o){var u=o.value,g=o.onChange,x=o.minDate,A=o.maxDate,k=o.saveTime,S=o.goToToday,z=o.clear,B=!u,R=n(null),w=n(null),E=n(null),H=n(),G=c((function(){var o=u?P(u)>=432e5?"pm":"am":void 0,s="pm"===o?12:0,n=u?u.getHours()-s:void 0;return{hours:D(void 0!==n&&0===n?12:n),minutes:D(null==u?void 0:u.getMinutes()),seconds:D(null==u?void 0:u.getSeconds()),partOfDay:o}}),[u]),U=i(G.hours),q=s(U,2),L=q[0],W=q[1],K=i(G.minutes),Z=s(K,2),J=Z[0],Q=Z[1],V=i(G.seconds),X=s(V,2),Y=X[0],$=X[1];t((function(){H.current!==R.current&&W(G.hours),H.current!==w.current&&Q(G.minutes),H.current!==E.current&&$(G.seconds)}),[G.hours,G.minutes,G.seconds]);var _=c((function(){var o=d(x,u)&&m(x).format("hh:mm:ss A"),s=d(A,u)&&m(A).format("hh:mm:ss A");return o&&s?"In ".concat(o," - ").concat(s," range"):o?"Can’t be earlier than ".concat(o):s?"Can’t be later than ".concat(s):void 0}),[A,x,u]),oo=c((function(){return C.map((function(o){var s="am"===o.value&&!!x&&d(u,x)&&P(x)>=432e5,n="pm"===o.value&&!!A&&d(u,A)&&P(A)<432e5;return O(O({},o),{},{disabled:B||s||n})}))}),[B,A,x,u]),so=e((function(o,s){if(u){var n=new Date(u);if("hours"===o&&T(s)){var c="pm"===G.partOfDay?12:0;n.setHours(c+Number(s))}else if("minutes"===o&&N(s))n.setMinutes(Number(s));else if("seconds"===o&&F(s))n.setSeconds(Number(s));else if("partOfDay"===o&&("am"===s||"pm"===s)){var i=n.getHours()%12;n.setHours(("pm"===s?12:0)+i)}Math.floor(n.getTime()/1e3)!==Math.floor(u.getTime()/1e3)&&g(n)}}),[G.partOfDay,g,u]),no=e((function(o){o.target.select(),H.current=o.target}),[]),co=e((function(o){var s=y(o.target.value);if(o.target===R.current){var n=M(s),c=T(n)?D(n):G.hours;W(c),so("hours",c)}if(o.target===w.current){var i=N(s)?D(s):G.minutes;Q(i),so("minutes",i)}if(o.target===E.current){var t=F(s)?D(s):G.seconds;$(t),so("seconds",t)}H.current=void 0}),[G.hours,G.minutes,G.seconds,so]),io=e((function(o){var s,n=y(o),c=M(n);(W(n),2===n.length&&T(n))&&(so("hours",c),null===(s=w.current)||void 0===s||s.focus())}),[so]),to=e((function(o){var s,n=y(o);(Q(n),2===n.length&&N(n))&&(so("minutes",n),null===(s=E.current)||void 0===s||s.focus())}),[so]),eo=e((function(o){var s=y(o);$(s),F(s)&&so("seconds",s)}),[so]),ro=e((function(o){so("partOfDay",o)}),[so]),mo=Number(null==u?void 0:u.getTime())>Number(null==A?void 0:A.getTime())||Number(null==u?void 0:u.getTime())<Number(null==x?void 0:x.getTime()),uo=!T(L)||mo,ao=!N(J)||mo,lo=!F(Y)||mo;return h(v,{children:[h("div",{className:r(I.timePicker),children:[h(l,{className:I.header,size:14,children:[b("span",{className:r(I.headerText,B&&I.disabled),children:"Time"}),_&&h(v,{children:[b(f,{className:I.constraintIcon,size:16}),_]})]}),b(a,{placeholder:"HH",className:I.input,disabled:B,value:L,onChange:io,status:uo?"error":void 0,inputRef:R,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"MM",className:I.input,disabled:B,value:J,onChange:to,status:ao?"error":void 0,inputRef:w,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"SS",className:I.input,disabled:B,value:Y,onChange:eo,status:lo?"error":void 0,inputRef:E,onFocus:no,onBlur:co}),b(p,{options:oo,className:I.tabs,size:"small",value:G.partOfDay,onChange:ro})]}),h("div",{className:I.footer,children:[S&&b(j,{onClick:S,type:"tertiary",size:"small",children:"Today"}),h("div",{className:I.actions,children:[z&&b(j,{onClick:z,type:"tertiary",size:"small",disabled:!u,children:"Clear"}),b(j,{onClick:k,type:"secondary",size:"small",disabled:!u||uo||ao||lo,children:"Save"})]})]})]})};export{x as TimePicker};
2
2
  //# sourceMappingURL=TimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { padStart } from 'lodash';\nimport classNames from 'classnames';\nimport moment from 'moment';\n\nimport { Tabs } from '../../Tabs';\n\nimport styles from './TimePicker.scss';\n\ntype AmPm = 'am' | 'pm';\n\nconst IntervalMin = 15;\nconst IntervalSec = IntervalMin * 60; // 15 minutes\nconst HalfOfDayMin = 12 * 60;\nconst HalfOfDaySec = HalfOfDayMin * 60;\nconst ButtonsCount = HalfOfDayMin / IntervalMin; // Half of day (AM/PM) in 15-minute intervals\n\nconst ButtonsBase = new Array(ButtonsCount).fill(0).map((_, index) => {\n const date = new Date(2000, 0, 1, 0, index * IntervalMin);\n const hours24 = date.getHours();\n // According to Wiki each 12-hour period starts with 12th hour\n // Can't people just use normal, simple, understandeable 24-hour format?\n // https://en.wikipedia.org/wiki/12-hour_clock#History_and_use\n const hours12 = hours24 === 0 ? 12 : hours24;\n\n const hours = padStart(String(hours12), 2, '0');\n const minutes = padStart(String(date.getMinutes()), 2, '0');\n\n return {\n offset: index * IntervalSec,\n title: `${hours}:${minutes}`,\n };\n});\n\nconst TabItems: { value: AmPm; label: string }[] = [\n { value: 'am', label: 'AM' },\n { value: 'pm', label: 'PM' },\n];\n\ntype TimePickerButtonProps = {\n offset: number;\n title: string;\n disabled: boolean;\n setOffset: (offset: number) => void;\n selected?: boolean;\n};\n\nconst TimePickerButton = ({\n offset,\n title,\n setOffset,\n disabled,\n selected,\n}: TimePickerButtonProps) => {\n const onClick = useCallback(() => setOffset(offset), [setOffset, offset]);\n return (\n <button\n data-offset={offset}\n data-selected={String(selected)}\n className={classNames(\n styles.button,\n disabled && styles.disabled,\n selected && styles.selected\n )}\n onClick={onClick}\n disabled={disabled}\n >\n {title}\n </button>\n );\n};\n\nexport type TimePickerProps = {\n value?: Date;\n onChange: (offset: number) => void;\n};\n\nexport type TimePickerImperativeHandle = {\n flash: () => void;\n};\n\nexport const TimePicker = forwardRef<TimePickerImperativeHandle, TimePickerProps>(\n ({ value, onChange }, ref) => {\n const disabled = !value;\n const [partOfDay, setPartOfDay] = useState<AmPm>();\n const buttonsRef = useRef<HTMLDivElement>(null);\n const skipScrollRef = useRef(false);\n const [flashKey, setFlashKey] = useState<number>();\n\n const tabs = useMemo(() => TabItems.map(tab => ({ ...tab, disabled })), [disabled]);\n\n // Seconds from day start\n const valueOffset = useMemo(() => {\n if (value) {\n const dayStart = moment(value).startOf('day').toDate();\n return Math.ceil((value.getTime() - dayStart.getTime()) / 1000);\n }\n\n return undefined;\n }, [value]);\n\n useEffect(() => {\n if (typeof valueOffset !== 'undefined') {\n setPartOfDay(valueOffset >= HalfOfDaySec ? 'pm' : 'am');\n } else {\n setPartOfDay(undefined);\n }\n }, [valueOffset]);\n\n const buttons = useMemo(\n () =>\n ButtonsBase.map(button => ({\n ...button,\n offset: button.offset + (partOfDay === 'pm' ? HalfOfDaySec : 0),\n })),\n [partOfDay]\n );\n\n useEffect(() => {\n setTimeout(() => {\n if (typeof valueOffset !== 'undefined' && buttonsRef.current && !skipScrollRef.current) {\n skipScrollRef.current = false;\n const selectedButton = buttonsRef.current.querySelector(\n '[data-selected=\"true\"]'\n ) as HTMLElement;\n\n if (selectedButton) {\n const elementScrollTop = selectedButton.offsetTop;\n const elementHeight = selectedButton.clientHeight;\n const containerHeight = buttonsRef.current.clientHeight;\n\n const scrollTarget = elementScrollTop - (containerHeight - elementHeight) / 2;\n\n buttonsRef.current.scrollTo({\n top: Math.max(scrollTarget, 0),\n });\n }\n }\n }, 0);\n }, [valueOffset]);\n\n useEffect(() => {\n if (disabled) {\n buttonsRef.current?.scrollTo({ top: 0 });\n }\n }, [disabled]);\n\n const onChangeHandler = useCallback(\n (offset: number) => {\n skipScrollRef.current = true;\n onChange(offset);\n },\n [onChange]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n flash: () => setFlashKey(1 + Math.random()),\n }),\n []\n );\n\n return (\n <div className={classNames(styles.root, flashKey && styles.flash)} key={flashKey}>\n <div className={styles.header}>\n <Tabs\n size=\"small\"\n type=\"secondary\"\n items={tabs}\n value={partOfDay}\n onChange={setPartOfDay}\n />\n </div>\n <div className={styles.body}>\n <div className={classNames(styles.buttons, disabled && styles.disabled)} ref={buttonsRef}>\n {buttons.map(({ offset, title }, index, self) => {\n const nextOffset =\n index === self.length - 1 ? offset + IntervalSec : self[index + 1].offset;\n\n const selected =\n typeof valueOffset !== 'undefined' &&\n valueOffset >= offset &&\n valueOffset < nextOffset;\n\n return (\n <TimePickerButton\n key={offset}\n offset={offset}\n title={title}\n disabled={disabled}\n setOffset={onChangeHandler}\n selected={selected}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n }\n);\n"],"names":["ButtonsBase","Array","HalfOfDayMin","fill","map","_","index","date","Date","hours24","getHours","hours","padStart","String","minutes","getMinutes","offset","IntervalMin","title","concat","TabItems","value","label","TimePickerButton","_ref","setOffset","disabled","selected","onClick","useCallback","_jsx","className","classNames","styles","button","children","TimePicker","forwardRef","_ref2","ref","onChange","_useState","useState","_useState2","_slicedToArray","partOfDay","setPartOfDay","buttonsRef","useRef","skipScrollRef","_useState3","_useState4","flashKey","setFlashKey","tabs","useMemo","tab","_objectSpread","valueOffset","dayStart","moment","startOf","toDate","Math","ceil","getTime","useEffect","undefined","buttons","setTimeout","current","selectedButton","querySelector","elementScrollTop","offsetTop","elementHeight","clientHeight","scrollTarget","scrollTo","top","max","_buttonsRef$current","onChangeHandler","useImperativeHandle","flash","random","_jsxs","root","header","Tabs","size","type","items","body","self","nextOffset","length"],"mappings":"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"}
1
+ {"version":3,"file":"TimePicker.js","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"sourcesContent":["import { FocusEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport { padStart } from 'lodash';\n\nimport { TextInputNext } from '../../TextInputNext';\nimport { Text } from '../../Text';\nimport { ToggleButtons } from '../../ToggleButtons';\nimport { isSameDay } from '../utils';\nimport { Button } from '../../Button';\n\nimport styles from './TimePicker.scss';\n\nimport { InfoIcon } from '~/icons';\n\ntype AmPm = 'am' | 'pm';\n\nconst HalfOfDayMs = 12 * 60 * 60 * 1000;\n\nconst ToggleButtonsOptions: { value: AmPm; label: string }[] = [\n { value: 'am', label: 'AM' },\n { value: 'pm', label: 'PM' },\n];\n\nexport type TimePickerProps = {\n value?: Date;\n onChange: (date: Date) => void;\n saveTime: () => void;\n maxDate?: Date;\n minDate?: Date;\n\n goToToday?: () => void;\n clear?: () => void;\n};\n\nconst sanitize = (value: string) => value.replace(/[^\\d]/g, '').substring(0, 2);\nconst validateHours = (value?: string) => Number(value) >= 0 && Number(value) <= 12;\nconst validateMinutes = (value?: string) => Number(value) >= 0 && Number(value) < 60;\nconst validateSeconds = validateMinutes;\n\nconst getOffsetFromDayStart = (date: Date) => {\n return date.getTime() - moment(date).startOf('day').toDate().getTime();\n};\n\nconst formatTimePart = (part?: string | number) =>\n part !== undefined ? padStart(String(part), 2, '0') : '';\n\nconst getPartOfDay = (date: Date) => {\n return getOffsetFromDayStart(date) >= HalfOfDayMs ? 'pm' : 'am';\n};\n\nconst getActualHours = (sanitized: string) => (sanitized === '12' ? '00' : sanitized);\n\nexport const TimePicker = ({\n value,\n onChange,\n minDate,\n maxDate,\n saveTime,\n goToToday,\n clear,\n}: TimePickerProps) => {\n const disabled = !value;\n\n const hoursInputRef = useRef<HTMLInputElement>(null);\n const minutesInputRef = useRef<HTMLInputElement>(null);\n const secondsInputRef = useRef<HTMLInputElement>(null);\n\n const focusedInputRef = useRef<HTMLInputElement>();\n\n const timeParts = useMemo(() => {\n const partOfDay = value ? getPartOfDay(value) : undefined;\n\n const hourOffset = partOfDay === 'pm' ? 12 : 0;\n\n const hours = value ? value.getHours() - hourOffset : undefined;\n\n const hoursAmPm = hours !== undefined && hours === 0 ? 12 : hours;\n\n return {\n hours: formatTimePart(hoursAmPm),\n minutes: formatTimePart(value?.getMinutes()),\n seconds: formatTimePart(value?.getSeconds()),\n partOfDay,\n };\n }, [value]);\n\n const [hours, setHours] = useState(timeParts.hours);\n const [minutes, setMinutes] = useState(timeParts.minutes);\n const [seconds, setSeconds] = useState(timeParts.seconds);\n\n useEffect(() => {\n if (focusedInputRef.current !== hoursInputRef.current) {\n setHours(timeParts.hours);\n }\n if (focusedInputRef.current !== minutesInputRef.current) {\n setMinutes(timeParts.minutes);\n }\n if (focusedInputRef.current !== secondsInputRef.current) {\n setSeconds(timeParts.seconds);\n }\n }, [timeParts.hours, timeParts.minutes, timeParts.seconds]);\n\n const constraintText = useMemo(() => {\n const minValue = isSameDay(minDate, value) && moment(minDate).format('hh:mm:ss A');\n const maxValue = isSameDay(maxDate, value) && moment(maxDate).format('hh:mm:ss A');\n\n if (minValue && maxValue) {\n return `In ${minValue} - ${maxValue} range`;\n } else if (minValue) {\n return `Can’t be earlier than ${minValue}`;\n } else if (maxValue) {\n return `Can’t be later than ${maxValue}`;\n }\n return undefined;\n }, [maxDate, minDate, value]);\n\n const amPmOptions = useMemo(\n () =>\n ToggleButtonsOptions.map(item => {\n const isAmDisabled =\n item.value === 'am' &&\n !!minDate &&\n isSameDay(value, minDate) &&\n getOffsetFromDayStart(minDate) >= HalfOfDayMs;\n\n const isPmDisabled =\n item.value === 'pm' &&\n !!maxDate &&\n isSameDay(value, maxDate) &&\n getOffsetFromDayStart(maxDate) < HalfOfDayMs;\n\n return { ...item, disabled: disabled || isAmDisabled || isPmDisabled };\n }),\n [disabled, maxDate, minDate, value]\n );\n\n const updateValue = useCallback(\n (type: 'hours' | 'minutes' | 'seconds' | 'partOfDay', newValue: string) => {\n if (!value) {\n return;\n }\n\n const newDate = new Date(value);\n\n if (type === 'hours' && validateHours(newValue)) {\n const partOfDayOffset = timeParts.partOfDay === 'pm' ? 12 : 0;\n newDate.setHours(partOfDayOffset + Number(newValue));\n } else if (type === 'minutes' && validateMinutes(newValue)) {\n newDate.setMinutes(Number(newValue));\n } else if (type === 'seconds' && validateSeconds(newValue)) {\n newDate.setSeconds(Number(newValue));\n } else if (type === 'partOfDay' && (newValue === 'am' || newValue === 'pm')) {\n const hoursOffset = newDate.getHours() % 12;\n newDate.setHours((newValue === 'pm' ? 12 : 0) + hoursOffset);\n }\n\n if (Math.floor(newDate.getTime() / 1000) !== Math.floor(value.getTime() / 1000)) {\n onChange(newDate);\n }\n },\n [timeParts.partOfDay, onChange, value]\n );\n\n const onFieldFocus = useCallback<FocusEventHandler<HTMLInputElement>>(e => {\n e.target.select();\n focusedInputRef.current = e.target;\n }, []);\n\n const onFieldBlur = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n const fieldValue = sanitize(e.target.value);\n\n if (e.target === hoursInputRef.current) {\n const actualHours = getActualHours(fieldValue);\n const newHours = validateHours(actualHours) ? formatTimePart(actualHours) : timeParts.hours;\n setHours(newHours);\n updateValue('hours', newHours);\n }\n if (e.target === minutesInputRef.current) {\n const newMinutes = validateMinutes(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.minutes;\n setMinutes(newMinutes);\n updateValue('minutes', newMinutes);\n }\n if (e.target === secondsInputRef.current) {\n const newSeconds = validateSeconds(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.seconds;\n setSeconds(newSeconds);\n updateValue('seconds', newSeconds);\n }\n\n focusedInputRef.current = undefined;\n },\n [timeParts.hours, timeParts.minutes, timeParts.seconds, updateValue]\n );\n\n const onChangeHours = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n const actualHours = getActualHours(sanitized);\n setHours(sanitized);\n if (sanitized.length === 2 && validateHours(sanitized)) {\n updateValue('hours', actualHours);\n minutesInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeMinutes = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setMinutes(sanitized);\n if (sanitized.length === 2 && validateMinutes(sanitized)) {\n updateValue('minutes', sanitized);\n secondsInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeSeconds = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setSeconds(sanitized);\n if (validateSeconds(sanitized)) {\n updateValue('seconds', sanitized);\n }\n },\n [updateValue]\n );\n\n const setPartOfDay = useCallback(\n (newValue: string) => {\n updateValue('partOfDay', newValue);\n },\n [updateValue]\n );\n\n const outOfBounds =\n Number(value?.getTime()) > Number(maxDate?.getTime()) ||\n Number(value?.getTime()) < Number(minDate?.getTime());\n\n const hoursInvalid = !validateHours(hours) || outOfBounds;\n const minutesInvalid = !validateMinutes(minutes) || outOfBounds;\n const secondsInvalid = !validateSeconds(seconds) || outOfBounds;\n\n return (\n <>\n <div className={classNames(styles.timePicker)}>\n <Text className={styles.header} size={14}>\n <span className={classNames(styles.headerText, disabled && styles.disabled)}>Time</span>\n {constraintText && (\n <>\n <InfoIcon className={styles.constraintIcon} size={16} />\n {constraintText}\n </>\n )}\n </Text>\n\n <TextInputNext\n placeholder=\"HH\"\n className={styles.input}\n disabled={disabled}\n value={hours}\n onChange={onChangeHours}\n status={hoursInvalid ? 'error' : undefined}\n inputRef={hoursInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"MM\"\n className={styles.input}\n disabled={disabled}\n value={minutes}\n onChange={onChangeMinutes}\n status={minutesInvalid ? 'error' : undefined}\n inputRef={minutesInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"SS\"\n className={styles.input}\n disabled={disabled}\n value={seconds}\n onChange={onChangeSeconds}\n status={secondsInvalid ? 'error' : undefined}\n inputRef={secondsInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <ToggleButtons\n options={amPmOptions}\n className={styles.tabs}\n size=\"small\"\n value={timeParts.partOfDay}\n onChange={setPartOfDay}\n />\n </div>\n <div className={styles.footer}>\n {goToToday && (\n <Button onClick={goToToday} type=\"tertiary\" size=\"small\">\n Today\n </Button>\n )}\n\n <div className={styles.actions}>\n {clear && (\n <Button onClick={clear} type=\"tertiary\" size=\"small\" disabled={!value}>\n Clear\n </Button>\n )}\n\n <Button\n onClick={saveTime}\n type=\"secondary\"\n size=\"small\"\n disabled={!value || hoursInvalid || minutesInvalid || secondsInvalid}\n >\n Save\n </Button>\n </div>\n </div>\n </>\n );\n};\n"],"names":["ToggleButtonsOptions","value","label","sanitize","replace","substring","validateHours","Number","validateMinutes","validateSeconds","getOffsetFromDayStart","date","getTime","moment","startOf","toDate","formatTimePart","part","undefined","padStart","String","getActualHours","sanitized","TimePicker","_ref","onChange","minDate","maxDate","saveTime","goToToday","clear","disabled","hoursInputRef","useRef","minutesInputRef","secondsInputRef","focusedInputRef","timeParts","useMemo","partOfDay","hourOffset","hours","getHours","minutes","getMinutes","seconds","getSeconds","_useState","useState","_useState2","_slicedToArray","setHours","_useState3","_useState4","setMinutes","_useState5","_useState6","setSeconds","useEffect","current","constraintText","minValue","isSameDay","format","maxValue","concat","amPmOptions","map","item","isAmDisabled","isPmDisabled","_objectSpread","updateValue","useCallback","type","newValue","newDate","Date","partOfDayOffset","hoursOffset","Math","floor","onFieldFocus","e","target","select","onFieldBlur","fieldValue","actualHours","newHours","newMinutes","newSeconds","onChangeHours","_minutesInputRef$curr","length","focus","onChangeMinutes","_secondsInputRef$curr","onChangeSeconds","setPartOfDay","outOfBounds","hoursInvalid","minutesInvalid","secondsInvalid","_jsxs","_Fragment","children","className","classNames","styles","timePicker","Text","header","size","_jsx","headerText","InfoIcon","constraintIcon","TextInputNext","placeholder","input","status","inputRef","onFocus","onBlur","color","ToggleButtons","options","tabs","footer","Button","onClick","actions"],"mappings":"8pKAiBA,IAEMA,EAAyD,CAC7D,CAAEC,MAAO,KAAMC,MAAO,MACtB,CAAED,MAAO,KAAMC,MAAO,OAclBC,EAAW,SAACF,GAAa,OAAKA,EAAMG,QAAQ,SAAU,IAAIC,UAAU,EAAG,EAAE,EACzEC,EAAgB,SAACL,GAAc,OAAKM,OAAON,IAAU,GAAKM,OAAON,IAAU,EAAE,EAC7EO,EAAkB,SAACP,GAAc,OAAKM,OAAON,IAAU,GAAKM,OAAON,GAAS,EAAE,EAC9EQ,EAAkBD,EAElBE,EAAwB,SAACC,GAC7B,OAAOA,EAAKC,UAAYC,EAAOF,GAAMG,QAAQ,OAAOC,SAASH,SAC/D,EAEMI,EAAiB,SAACC,GAAsB,YACnCC,IAATD,EAAqBE,EAASC,OAAOH,GAAO,EAAG,KAAO,EAAE,EAMpDI,EAAiB,SAACC,GAAiB,MAAoB,OAAdA,EAAqB,KAAOA,CAAS,EAEvEC,EAAa,SAQHC,GAAA,IAPrBvB,IAAAA,MACAwB,IAAAA,SACAC,IAAAA,QACAC,IAAAA,QACAC,IAAAA,SACAC,IAAAA,UACAC,IAAAA,MAEMC,GAAY9B,EAEZ+B,EAAgBC,EAAyB,MACzCC,EAAkBD,EAAyB,MAC3CE,EAAkBF,EAAyB,MAE3CG,EAAkBH,IAElBI,EAAYC,GAAQ,WACxB,IAAMC,EAAYtC,EAvBbS,EAuBkCT,IAtDvB,MA+BkC,KAAO,UAuBTiB,EAE1CsB,EAA2B,OAAdD,EAAqB,GAAK,EAEvCE,EAAQxC,EAAQA,EAAMyC,WAAaF,OAAatB,EAItD,MAAO,CACLuB,MAAOzB,OAHmBE,IAAVuB,GAAiC,IAAVA,EAAc,GAAKA,GAI1DE,QAAS3B,EAAef,aAAK,EAALA,EAAO2C,cAC/BC,QAAS7B,EAAef,aAAK,EAALA,EAAO6C,cAC/BP,UAAAA,EAEJ,GAAG,CAACtC,IAEJ8C,EAA0BC,EAASX,EAAUI,OAAMQ,EAAAC,EAAAH,EAAA,GAA5CN,EAAKQ,EAAA,GAAEE,EAAQF,EAAA,GACtBG,EAA8BJ,EAASX,EAAUM,SAAQU,EAAAH,EAAAE,EAAA,GAAlDT,EAAOU,EAAA,GAAEC,EAAUD,EAAA,GAC1BE,EAA8BP,EAASX,EAAUQ,SAAQW,EAAAN,EAAAK,EAAA,GAAlDV,EAAOW,EAAA,GAAEC,EAAUD,EAAA,GAE1BE,GAAU,WACJtB,EAAgBuB,UAAY3B,EAAc2B,SAC5CR,EAASd,EAAUI,OAEjBL,EAAgBuB,UAAYzB,EAAgByB,SAC9CL,EAAWjB,EAAUM,SAEnBP,EAAgBuB,UAAYxB,EAAgBwB,SAC9CF,EAAWpB,EAAUQ,QAEzB,GAAG,CAACR,EAAUI,MAAOJ,EAAUM,QAASN,EAAUQ,UAElD,IAAMe,EAAiBtB,GAAQ,WAC7B,IAAMuB,EAAWC,EAAUpC,EAASzB,IAAUY,EAAOa,GAASqC,OAAO,cAC/DC,EAAWF,EAAUnC,EAAS1B,IAAUY,EAAOc,GAASoC,OAAO,cAErE,OAAIF,GAAYG,EACDH,MAAAA,OAAAA,gBAAcG,EAAQ,UAC1BH,EACT,yBAAAI,OAAgCJ,GACvBG,EACT,uBAAAC,OAA8BD,QADzB,CAIR,GAAE,CAACrC,EAASD,EAASzB,IAEhBiE,GAAc5B,GAClB,WAAA,OACEtC,EAAqBmE,KAAI,SAAAC,GACvB,IAAMC,EACW,OAAfD,EAAKnE,SACHyB,GACFoC,EAAU7D,EAAOyB,IACjBhB,EAAsBgB,IA3GZ,MA6GN4C,EACW,OAAfF,EAAKnE,SACH0B,GACFmC,EAAU7D,EAAO0B,IACjBjB,EAAsBiB,GAjHZ,MAmHZ,OAAA4C,EAAAA,EAAA,CAAA,EAAYH,GAAI,CAAA,EAAA,CAAErC,SAAUA,GAAYsC,GAAgBC,GAC1D,GACF,GAAA,CAACvC,EAAUJ,EAASD,EAASzB,IAGzBuE,GAAcC,GAClB,SAACC,EAAqDC,GACpD,GAAK1E,EAAL,CAIA,IAAM2E,EAAU,IAAIC,KAAK5E,GAEzB,GAAa,UAATyE,GAAoBpE,EAAcqE,GAAW,CAC/C,IAAMG,EAA0C,OAAxBzC,EAAUE,UAAqB,GAAK,EAC5DqC,EAAQzB,SAAS2B,EAAkBvE,OAAOoE,GAC3C,MAAM,GAAa,YAATD,GAAsBlE,EAAgBmE,GAC/CC,EAAQtB,WAAW/C,OAAOoE,SACrB,GAAa,YAATD,GAAsBjE,EAAgBkE,GAC/CC,EAAQnB,WAAWlD,OAAOoE,SACrB,GAAa,cAATD,IAAsC,OAAbC,GAAkC,OAAbA,GAAoB,CAC3E,IAAMI,EAAcH,EAAQlC,WAAa,GACzCkC,EAAQzB,UAAuB,OAAbwB,EAAoB,GAAK,GAAKI,EAClD,CAEIC,KAAKC,MAAML,EAAQhE,UAAY,OAAUoE,KAAKC,MAAMhF,EAAMW,UAAY,MACxEa,EAASmD,EAjBX,CAmBD,GACD,CAACvC,EAAUE,UAAWd,EAAUxB,IAG5BiF,GAAeT,GAAiD,SAAAU,GACpEA,EAAEC,OAAOC,SACTjD,EAAgBuB,QAAUwB,EAAEC,MAC7B,GAAE,IAEGE,GAAcb,GAClB,SAAAU,GACE,IAAMI,EAAapF,EAASgF,EAAEC,OAAOnF,OAErC,GAAIkF,EAAEC,SAAWpD,EAAc2B,QAAS,CACtC,IAAM6B,EAAcnE,EAAekE,GAC7BE,EAAWnF,EAAckF,GAAexE,EAAewE,GAAenD,EAAUI,MACtFU,EAASsC,GACTjB,GAAY,QAASiB,EACvB,CACA,GAAIN,EAAEC,SAAWlD,EAAgByB,QAAS,CACxC,IAAM+B,EAAalF,EAAgB+E,GAC/BvE,EAAeuE,GACflD,EAAUM,QACdW,EAAWoC,GACXlB,GAAY,UAAWkB,EACzB,CACA,GAAIP,EAAEC,SAAWjD,EAAgBwB,QAAS,CACxC,IAAMgC,EAAalF,EAAgB8E,GAC/BvE,EAAeuE,GACflD,EAAUQ,QACdY,EAAWkC,GACXnB,GAAY,UAAWmB,EACzB,CAEAvD,EAAgBuB,aAAUzC,CAC5B,GACA,CAACmB,EAAUI,MAAOJ,EAAUM,QAASN,EAAUQ,QAAS2B,KAGpDoB,GAAgBnB,GACpB,SAACE,GACC,IAGwDkB,EAHlDvE,EAAYnB,EAASwE,GACrBa,EAAcnE,EAAeC,IACnC6B,EAAS7B,GACgB,IAArBA,EAAUwE,QAAgBxF,EAAcgB,MAC1CkD,GAAY,QAASgB,GACrB,QAAAK,EAAA3D,EAAgByB,eAAhB,IAAAkC,GAAAA,EAAyBE,QAE7B,GACA,CAACvB,KAGGwB,GAAkBvB,GACtB,SAACE,GACC,IAE0DsB,EAFpD3E,EAAYnB,EAASwE,IAC3BrB,EAAWhC,GACc,IAArBA,EAAUwE,QAAgBtF,EAAgBc,MAC5CkD,GAAY,UAAWlD,GACvB,QAAA2E,EAAA9D,EAAgBwB,eAAhB,IAAAsC,GAAAA,EAAyBF,QAE7B,GACA,CAACvB,KAGG0B,GAAkBzB,GACtB,SAACE,GACC,IAAMrD,EAAYnB,EAASwE,GAC3BlB,EAAWnC,GACPb,EAAgBa,IAClBkD,GAAY,UAAWlD,EAE3B,GACA,CAACkD,KAGG2B,GAAe1B,GACnB,SAACE,GACCH,GAAY,YAAaG,EAC3B,GACA,CAACH,KAGG4B,GACJ7F,OAAON,aAAAA,EAAAA,EAAOW,WAAaL,OAAOoB,aAAO,EAAPA,EAASf,YAC3CL,OAAON,aAAAA,EAAAA,EAAOW,WAAaL,OAAOmB,eAAAA,EAASd,WAEvCyF,IAAgB/F,EAAcmC,IAAU2D,GACxCE,IAAkB9F,EAAgBmC,IAAYyD,GAC9CG,IAAkB9F,EAAgBoC,IAAYuD,GAEpD,OACEI,EAAAC,EAAA,CAAAC,SACE,CAAAF,EAAA,MAAA,CAAKG,UAAWC,EAAWC,EAAOC,YAAYJ,SAAA,CAC5CF,EAACO,EAAI,CAACJ,UAAWE,EAAOG,OAAQC,KAAM,GAAGP,SACvC,CAAAQ,EAAA,OAAA,CAAMP,UAAWC,EAAWC,EAAOM,WAAYpF,GAAY8E,EAAO9E,UAAU2E,SAAA,SAC3E9C,GACC4C,EAAAC,EAAA,CAAAC,SAAA,CACEQ,EAACE,EAAQ,CAACT,UAAWE,EAAOQ,eAAgBJ,KAAM,KACjDrD,QAKPsD,EAACI,EAAa,CACZC,YAAY,KACZZ,UAAWE,EAAOW,MAClBzF,SAAUA,EACV9B,MAAOwC,EACPhB,SAAUmE,GACV6B,OAAQpB,GAAe,aAAUnF,EACjCwG,SAAU1F,EACV2F,QAASzC,GACT0C,OAAQtC,KAGV4B,EAACH,EAAI,CAACc,MAAM,KAAKZ,KAAM,GAAGP,SAAA,MAI1BQ,EAACI,EAAa,CACZC,YAAY,KACZZ,UAAWE,EAAOW,MAClBzF,SAAUA,EACV9B,MAAO0C,EACPlB,SAAUuE,GACVyB,OAAQnB,GAAiB,aAAUpF,EACnCwG,SAAUxF,EACVyF,QAASzC,GACT0C,OAAQtC,KAGV4B,EAACH,EAAI,CAACc,MAAM,KAAKZ,KAAM,GAAGP,SAAA,MAI1BQ,EAACI,EAAa,CACZC,YAAY,KACZZ,UAAWE,EAAOW,MAClBzF,SAAUA,EACV9B,MAAO4C,EACPpB,SAAUyE,GACVuB,OAAQlB,GAAiB,aAAUrF,EACnCwG,SAAUvF,EACVwF,QAASzC,GACT0C,OAAQtC,KAGV4B,EAACY,EAAa,CACZC,QAAS7D,GACTyC,UAAWE,EAAOmB,KAClBf,KAAK,QACLhH,MAAOoC,EAAUE,UACjBd,SAAU0E,QAGdK,EAAA,MAAA,CAAKG,UAAWE,EAAOoB,OAAOvB,SAC3B7E,CAAAA,GACCqF,EAACgB,EAAM,CAACC,QAAStG,EAAW6C,KAAK,WAAWuC,KAAK,QAAOP,SAAA,UAK1DF,EAAA,MAAA,CAAKG,UAAWE,EAAOuB,QAAQ1B,SAC5B5E,CAAAA,GACCoF,EAACgB,EAAM,CAACC,QAASrG,EAAO4C,KAAK,WAAWuC,KAAK,QAAQlF,UAAW9B,EAAMyG,SAAA,UAKxEQ,EAACgB,EAAM,CACLC,QAASvG,EACT8C,KAAK,YACLuC,KAAK,QACLlF,UAAW9B,GAASoG,IAAgBC,IAAkBC,GAAeG,SAAA,iBAQjF"}
@@ -1,2 +1,2 @@
1
- import e from'./../../../ext-esm/style-inject/dist/style-inject.es.js';var r={spacing:"8",root:"TimePicker_root__8V00p",flash:"TimePicker_flash__oACQ0",TimePickerPulseShadow:"TimePicker_TimePickerPulseShadow__Rqbwt",header:"TimePicker_header__IQJE8",body:"TimePicker_body__I-gTV",buttons:"TimePicker_buttons__r7ov-",disabled:"TimePicker_disabled__tK9tS",button:"TimePicker_button__Lv0xZ",selected:"TimePicker_selected__qpPUm"};e('.TimePicker_root__8V00p{display:flex;flex-flow:column nowrap;min-height:1px;position:relative}.TimePicker_flash__oACQ0:after{animation:TimePicker_TimePickerPulseShadow__Rqbwt .7s cubic-bezier(.215,.61,.355,1) 1;border-radius:8px;content:"";inset:0;pointer-events:none;position:absolute}.TimePicker_header__IQJE8{align-items:center;border-bottom:2px solid var(--palette-background-b-4);display:flex;flex:0 0 48px;flex-flow:row nowrap;justify-content:center;padding:0 8px}.TimePicker_body__I-gTV{border-left:2px solid var(--palette-background-b-4);flex:0 1 100%;position:relative}.TimePicker_buttons__r7ov-{display:flex;flex-flow:column nowrap;gap:16px;height:100%;inset:0;mask:linear-gradient(0deg,transparent,#000 8px,#000 calc(100% - 8px),transparent);overflow:auto;padding:16px 16px 16px 14px;position:absolute}.TimePicker_buttons__r7ov-.TimePicker_disabled__tK9tS{overflow:hidden}.TimePicker_button__Lv0xZ{background:transparent;border:none;border-radius:8px;color:var(--palette-primary-text-6);cursor:pointer;display:block;font-size:14px;font-weight:400;height:40px;line-height:28px;margin-left:25px;outline:none;padding:0;text-align:center;transition:color .15s cubic-bezier(.4,0,.2,1),background .15s cubic-bezier(.4,0,.2,1);width:55px}.TimePicker_button__Lv0xZ:focus,.TimePicker_button__Lv0xZ:hover{background:var(--palette-background-b-9)}.TimePicker_button__Lv0xZ:active{background:var(--palette-background-b-10)}.TimePicker_button__Lv0xZ.TimePicker_selected__qpPUm{background:var(--palette-primary-main);color:var(--palette-background-b-4);font-weight:500}.TimePicker_button__Lv0xZ.TimePicker_disabled__tK9tS{background:transparent;color:var(--palette-primary-text-9);cursor:auto}@keyframes TimePicker_TimePickerPulseShadow__Rqbwt{0%{box-shadow:0 0 0 0 rgb(from var(--palette-primary-main) r g b/0)}30%{box-shadow:0 0 0 1px rgb(from var(--palette-primary-main) r g b/.7)}to{box-shadow:0 0 0 5px rgb(from var(--palette-primary-main) r g b/0)}}');export{r as default};
1
+ import e from'./../../../ext-esm/style-inject/dist/style-inject.es.js';var i={spacing:"8",timePicker:"TimePicker_timePicker__zbwy1",header:"TimePicker_header__IQJE8",headerText:"TimePicker_headerText__ztp7U",disabled:"TimePicker_disabled__tK9tS",constraintIcon:"TimePicker_constraintIcon__y2pg6",input:"TimePicker_input__-wBnb",tabs:"TimePicker_tabs__jNS1I",footer:"TimePicker_footer__-xJOC",actions:"TimePicker_actions__fx-7e"};e(".TimePicker_timePicker__zbwy1{align-items:center;border-top:2px solid var(--palette-background-b-4);display:flex;flex-flow:row wrap;gap:8px 4px;padding:8px}.TimePicker_header__IQJE8{align-items:center;color:var(--palette-info-light);display:flex;flex:0 0 100%;flex-flow:row nowrap;gap:4px}.TimePicker_headerText__ztp7U{color:var(--palette-primary-text-1);flex:0 0 auto}.TimePicker_headerText__ztp7U.TimePicker_disabled__tK9tS{color:var(--palette-primary-text-9);cursor:default}.TimePicker_constraintIcon__y2pg6{flex:0 0 auto;margin-left:auto}.TimePicker_input__-wBnb{width:46px}.TimePicker_tabs__jNS1I{margin-left:auto}.TimePicker_footer__-xJOC{align-items:center;border-top:2px solid var(--palette-background-b-4);display:flex;flex-flow:row nowrap;gap:8px;padding:8px}.TimePicker_actions__fx-7e{margin-left:auto}");export{i as default};
2
2
  //# sourceMappingURL=TimePicker.scss.js.map
@@ -1,8 +1,7 @@
1
1
  export type DatePickerType = 'date' | 'dateTime' | 'month';
2
2
  export type DatePickerValue<IsRange extends boolean | undefined = false> = IsRange extends undefined | false ? Date | undefined : [Date, Date] | undefined;
3
3
  export type DatePickerChangeHandler<IsRange extends boolean | undefined = false> = (value: DatePickerValue<IsRange>) => void;
4
- export type RangeSelectionStep = 'startDate' | 'startTime' | 'endDate' | 'endTime';
5
- export declare const applyOffsetSeconds: (date: Date, offset: number) => Date;
4
+ export type RangeSelectionStep = 'startDate' | 'endDate';
6
5
  export declare const DefaultFormatByType: Record<DatePickerType, string>;
7
6
  export declare const DefaultFormatByTypeRange: Record<DatePickerType, string>;
8
7
  export declare const getDefaultFormat: (type: DatePickerType, range?: boolean) => string;
@@ -24,4 +23,5 @@ export declare const MonthOptions: {
24
23
  fullTitle: string;
25
24
  }[];
26
25
  export type DatePickerCalendarView = 'year' | 'month';
26
+ export declare const getDateWithSameTime: (date: Date, timeDate?: Date) => Date;
27
27
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/utils.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,SAC9E,SAAS,GACT,KAAK,GACL,IAAI,GAAG,SAAS,GAChB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;AAE7B,MAAM,MAAM,uBAAuB,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,IAAI,CACjF,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAC5B,IAAI,CAAC;AAMV,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF,eAAO,MAAM,kBAAkB,SAAU,IAAI,UAAU,MAAM,SACA,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,cAAc,UAAU,OAAO,WAGrE,CAAC;AAOF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAI9D,CAAC;AA+BF,eAAO,MAAM,iBAAiB,uCAK3B;IACD,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,WAoBA,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,IAAI,MAAM,IAAI,YACsC,CAAC;AAErF,eAAO,MAAM,SAAS,OAAQ,IAAI,MAAM,IAAI,YAAuD,CAAC;AAEpG,eAAO,MAAM,UAAU,OAAQ,IAAI,MAAM,IAAI,qBAM5C,CAAC;AAEF,eAAO,MAAM,UAAU,OAAQ,IAAI,MAAM,IAAI,qBAM5C,CAAC;AAEF,eAAO,MAAM,YAAY;;;;GAaxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/utils.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,SAC9E,SAAS,GACT,KAAK,GACL,IAAI,GAAG,SAAS,GAChB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;AAE7B,MAAM,MAAM,uBAAuB,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,IAAI,CACjF,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAC5B,IAAI,CAAC;AAIV,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,CAAC;AAEzD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,cAAc,UAAU,OAAO,WAGrE,CAAC;AAOF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAI9D,CAAC;AA+BF,eAAO,MAAM,iBAAiB,uCAK3B;IACD,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,WAoBA,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,IAAI,MAAM,IAAI,YACsC,CAAC;AAErF,eAAO,MAAM,SAAS,OAAQ,IAAI,MAAM,IAAI,YAAuD,CAAC;AAEpG,eAAO,MAAM,UAAU,OAAQ,IAAI,MAAM,IAAI,qBAM5C,CAAC;AAEF,eAAO,MAAM,UAAU,OAAQ,IAAI,MAAM,IAAI,qBAM5C,CAAC;AAEF,eAAO,MAAM,YAAY;;;;GAaxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD,eAAO,MAAM,mBAAmB,SAAU,IAAI,aAAa,IAAI,SAQ5D,CAAC"}
@@ -1,2 +1,2 @@
1
- import t from"moment";var e=function(e,l){return t(e).startOf("day").add(l,"seconds").toDate()},l={date:"DD MMM YYYY",dateTime:"DD MMM YYYY hh:mm A",month:"MMMM YYYY"},n={date:"DD/MM/YYYY",dateTime:"DD/MM/YYYY hh:mm A",month:"MMM YYYY"},i=function(t,e){return(e?n:l)[t]},r=["D","M","Y","h","m","s","S"],Y=[].concat(r,["A"]),u=new RegExp("^([^".concat(Y.join(""),"]+)"),"gi"),a={month:"MM/YYYY",date:"DD/MM/YYYY",dateTime:"DD/MM/YYYY hh:mm A"},o={month:[a.month,"MMMM YYYY","MMM YYYY"],date:[a.date,"D/M/YYYY"],dateTime:[a.dateTime,"D/M/YYYY hh:mm A"]},M=function(t){var e=t.value,l=t.type,n=t.range,i=t.prevValue,Y=a[l],o=n?"".concat(Y," - ").concat(Y):Y,M=e.toLocaleLowerCase().replace(/([ap])m/gi,"$1");if(e.length<=i.length||!function(t,e){return e.length<=t.length&&e.split("").every((function(e,l){var n,i=t[l];if(r.includes(i))return null==(n=e)?void 0:n.match(/\d/);if("A"===i){var Y=e.toLocaleLowerCase();return"a"===Y||"p"===Y}return i===e}))}(o,M)||o.length<=M.length)return e;var c=function(t,e){var l;return(null===(l=t.substring(e).match(u))||void 0===l?void 0:l[0])||""}(o,M.length);return"".concat(e).concat(c)},c=function(t,e){return!!t&&!!e&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()},d=function(t,e){return c(t,e)&&(null==t?void 0:t.getDate())===(null==e?void 0:e.getDate())},m=function(t,e){return t&&e?t<e?t:e:t||e},f=function(t,e){return t&&e?t>e?t:e:t||e},h=[{id:1,title:"Jan",fullTitle:"January"},{id:2,title:"Feb",fullTitle:"February"},{id:3,title:"Mar",fullTitle:"March"},{id:4,title:"Apr",fullTitle:"April"},{id:5,title:"May",fullTitle:"May"},{id:6,title:"Jun",fullTitle:"June"},{id:7,title:"Jul",fullTitle:"July"},{id:8,title:"Aug",fullTitle:"August"},{id:9,title:"Sep",fullTitle:"September"},{id:10,title:"Oct",fullTitle:"October"},{id:11,title:"Nov",fullTitle:"November"},{id:12,title:"Dec",fullTitle:"December"}];export{l as DefaultFormatByType,n as DefaultFormatByTypeRange,a as InputAutocompleteFormats,o as InputParseFormats,h as MonthOptions,e as applyOffsetSeconds,M as autocompleteValue,i as getDefaultFormat,f as getMaxDate,m as getMinDate,d as isSameDay,c as isSameMonth};
1
+ var t={date:"DD MMM YYYY",dateTime:"DD MMM YYYY hh:mm A",month:"MMMM YYYY"},e={date:"DD/MM/YYYY",dateTime:"DD/MM/YYYY hh:mm A",month:"MMM YYYY"},l=function(l,n){return(n?e:t)[l]},n=["D","M","Y","h","m","s","S"],i=[].concat(n,["A"]),u=new RegExp("^([^".concat(i.join(""),"]+)"),"gi"),Y={month:"MM/YYYY",date:"DD/MM/YYYY",dateTime:"DD/MM/YYYY hh:mm A"},r={month:[Y.month,"MMMM YYYY","MMM YYYY"],date:[Y.date,"D/M/YYYY"],dateTime:[Y.dateTime,"D/M/YYYY hh:mm A"]},a=function(t){var e=t.value,l=t.type,i=t.range,r=t.prevValue,a=Y[l],o=i?"".concat(a," - ").concat(a):a,M=e.toLocaleLowerCase().replace(/([ap])m/gi,"$1");if(e.length<=r.length||!function(t,e){return e.length<=t.length&&e.split("").every((function(e,l){var i,u=t[l];if(n.includes(u))return null==(i=e)?void 0:i.match(/\d/);if("A"===u){var Y=e.toLocaleLowerCase();return"a"===Y||"p"===Y}return u===e}))}(o,M)||o.length<=M.length)return e;var c=function(t,e){var l;return(null===(l=t.substring(e).match(u))||void 0===l?void 0:l[0])||""}(o,M.length);return"".concat(e).concat(c)},o=function(t,e){return!!t&&!!e&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()},M=function(t,e){return o(t,e)&&(null==t?void 0:t.getDate())===(null==e?void 0:e.getDate())},c=function(t,e){return t&&e?t<e?t:e:t||e},d=function(t,e){return t&&e?t>e?t:e:t||e},h=[{id:1,title:"Jan",fullTitle:"January"},{id:2,title:"Feb",fullTitle:"February"},{id:3,title:"Mar",fullTitle:"March"},{id:4,title:"Apr",fullTitle:"April"},{id:5,title:"May",fullTitle:"May"},{id:6,title:"Jun",fullTitle:"June"},{id:7,title:"Jul",fullTitle:"July"},{id:8,title:"Aug",fullTitle:"August"},{id:9,title:"Sep",fullTitle:"September"},{id:10,title:"Oct",fullTitle:"October"},{id:11,title:"Nov",fullTitle:"November"},{id:12,title:"Dec",fullTitle:"December"}],g=function(t,e){return new Date(t.getFullYear(),t.getMonth(),t.getDate(),(null==e?void 0:e.getHours())||0,(null==e?void 0:e.getMinutes())||0,(null==e?void 0:e.getSeconds())||0)};export{t as DefaultFormatByType,e as DefaultFormatByTypeRange,Y as InputAutocompleteFormats,r as InputParseFormats,h as MonthOptions,a as autocompleteValue,g as getDateWithSameTime,l as getDefaultFormat,d as getMaxDate,c as getMinDate,M as isSameDay,o as isSameMonth};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/componentsV2/DatePicker/utils.tsx"],"sourcesContent":["import moment from 'moment';\n\nexport type DatePickerType = 'date' | 'dateTime' | 'month';\n\nexport type DatePickerValue<IsRange extends boolean | undefined = false> = IsRange extends\n | undefined\n | false\n ? Date | undefined\n : [Date, Date] | undefined;\n\nexport type DatePickerChangeHandler<IsRange extends boolean | undefined = false> = (\n value: DatePickerValue<IsRange>\n) => void;\n\n// startDate - initial state, no start date selected\n// startTime - start date selected, no time selected\n// endDate - start done, no end date selected\n// endTime - end date selected, no time selected\nexport type RangeSelectionStep = 'startDate' | 'startTime' | 'endDate' | 'endTime';\n\nexport const applyOffsetSeconds = (date: Date, offset: number) =>\n moment(date).startOf('day').add(offset, 'seconds').toDate();\n\nexport const DefaultFormatByType: Record<DatePickerType, string> = {\n date: 'DD MMM YYYY',\n dateTime: 'DD MMM YYYY hh:mm A',\n month: 'MMMM YYYY',\n};\n\nexport const DefaultFormatByTypeRange: Record<DatePickerType, string> = {\n date: 'DD/MM/YYYY',\n dateTime: 'DD/MM/YYYY hh:mm A',\n month: 'MMM YYYY',\n};\n\nexport const getDefaultFormat = (type: DatePickerType, range?: boolean) => {\n const map = range ? DefaultFormatByTypeRange : DefaultFormatByType;\n return map[type];\n};\n\nconst NumericLetters = ['D', 'M', 'Y', 'h', 'm', 's', 'S'];\nconst AllLetters = [...NumericLetters, 'A'];\nconst GetSeparatorRegex = new RegExp(`^([^${AllLetters.join('')}]+)`, 'gi');\n\n// These formats should be composed only of `AllLetters` as placeholders only\nexport const InputAutocompleteFormats: Record<DatePickerType, string> = {\n month: 'MM/YYYY',\n date: 'DD/MM/YYYY',\n dateTime: 'DD/MM/YYYY hh:mm A',\n};\n\nexport const InputParseFormats: Record<DatePickerType, string[]> = {\n month: [InputAutocompleteFormats.month, 'MMMM YYYY', 'MMM YYYY'],\n date: [InputAutocompleteFormats.date, 'D/M/YYYY'],\n dateTime: [InputAutocompleteFormats.dateTime, 'D/M/YYYY hh:mm A'],\n};\n\nconst isDigit = (symbol?: string) => symbol?.match(/\\d/);\n\nconst isInFormatSoFar = (format: string, value: string) => {\n if (value.length <= format.length) {\n const valueArr = value.split('');\n\n return valueArr.every((valueChar, pos) => {\n const formatChar = format[pos];\n\n if (NumericLetters.includes(formatChar)) {\n return isDigit(valueChar);\n }\n\n if (formatChar === 'A') {\n const lcChar = valueChar.toLocaleLowerCase();\n return lcChar === 'a' || lcChar === 'p';\n }\n\n return formatChar === valueChar;\n });\n }\n\n return false;\n};\n\nconst getSeparator = (format: string, startIndex: number) => {\n return format.substring(startIndex).match(GetSeparatorRegex)?.[0] || '';\n};\n\nexport const autocompleteValue = ({\n value,\n type,\n range,\n prevValue,\n}: {\n type: DatePickerType;\n range?: boolean;\n value: string;\n prevValue: string;\n}) => {\n const formatPart = InputAutocompleteFormats[type];\n const format = range ? `${formatPart} - ${formatPart}` : formatPart;\n\n const preparedValue = value.toLocaleLowerCase().replace(/([ap])m/gi, '$1');\n\n if (\n value.length <= prevValue.length ||\n !isInFormatSoFar(format, preparedValue) ||\n format.length <= preparedValue.length\n ) {\n return value;\n }\n\n // Only autocomplete if user types something\n // Check if conforms to format so far\n // Adding separators if needed\n const separator = getSeparator(format, preparedValue.length);\n\n return `${value}${separator}`;\n};\n\nexport const isSameMonth = (a?: Date, b?: Date) =>\n !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a?: Date, b?: Date) => isSameMonth(a, b) && a?.getDate() === b?.getDate();\n\nexport const getMinDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a < b ? a : b;\n }\n\n return a || b;\n};\n\nexport const getMaxDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a > b ? a : b;\n }\n\n return a || b;\n};\n\nexport const MonthOptions = [\n { id: 1, title: 'Jan', fullTitle: 'January' },\n { id: 2, title: 'Feb', fullTitle: 'February' },\n { id: 3, title: 'Mar', fullTitle: 'March' },\n { id: 4, title: 'Apr', fullTitle: 'April' },\n { id: 5, title: 'May', fullTitle: 'May' },\n { id: 6, title: 'Jun', fullTitle: 'June' },\n { id: 7, title: 'Jul', fullTitle: 'July' },\n { id: 8, title: 'Aug', fullTitle: 'August' },\n { id: 9, title: 'Sep', fullTitle: 'September' },\n { id: 10, title: 'Oct', fullTitle: 'October' },\n { id: 11, title: 'Nov', fullTitle: 'November' },\n { id: 12, title: 'Dec', fullTitle: 'December' },\n];\n\nexport type DatePickerCalendarView = 'year' | 'month';\n"],"names":["applyOffsetSeconds","date","offset","moment","startOf","add","toDate","DefaultFormatByType","dateTime","month","DefaultFormatByTypeRange","getDefaultFormat","type","range","NumericLetters","AllLetters","concat","GetSeparatorRegex","RegExp","join","InputAutocompleteFormats","InputParseFormats","autocompleteValue","_ref","value","prevValue","formatPart","format","preparedValue","toLocaleLowerCase","replace","length","split","every","valueChar","pos","symbol","formatChar","includes","match","lcChar","isInFormatSoFar","separator","startIndex","_format$substring$mat","substring","getSeparator","isSameMonth","a","b","getFullYear","getMonth","isSameDay","getDate","getMinDate","getMaxDate","MonthOptions","id","title","fullTitle"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/componentsV2/DatePicker/utils.tsx"],"sourcesContent":["export type DatePickerType = 'date' | 'dateTime' | 'month';\n\nexport type DatePickerValue<IsRange extends boolean | undefined = false> = IsRange extends\n | undefined\n | false\n ? Date | undefined\n : [Date, Date] | undefined;\n\nexport type DatePickerChangeHandler<IsRange extends boolean | undefined = false> = (\n value: DatePickerValue<IsRange>\n) => void;\n\n// startDate - initial state, no start date selected\n// endDate - start done, no end date selected\nexport type RangeSelectionStep = 'startDate' | 'endDate';\n\nexport const DefaultFormatByType: Record<DatePickerType, string> = {\n date: 'DD MMM YYYY',\n dateTime: 'DD MMM YYYY hh:mm A',\n month: 'MMMM YYYY',\n};\n\nexport const DefaultFormatByTypeRange: Record<DatePickerType, string> = {\n date: 'DD/MM/YYYY',\n dateTime: 'DD/MM/YYYY hh:mm A',\n month: 'MMM YYYY',\n};\n\nexport const getDefaultFormat = (type: DatePickerType, range?: boolean) => {\n const map = range ? DefaultFormatByTypeRange : DefaultFormatByType;\n return map[type];\n};\n\nconst NumericLetters = ['D', 'M', 'Y', 'h', 'm', 's', 'S'];\nconst AllLetters = [...NumericLetters, 'A'];\nconst GetSeparatorRegex = new RegExp(`^([^${AllLetters.join('')}]+)`, 'gi');\n\n// These formats should be composed only of `AllLetters` as placeholders only\nexport const InputAutocompleteFormats: Record<DatePickerType, string> = {\n month: 'MM/YYYY',\n date: 'DD/MM/YYYY',\n dateTime: 'DD/MM/YYYY hh:mm A',\n};\n\nexport const InputParseFormats: Record<DatePickerType, string[]> = {\n month: [InputAutocompleteFormats.month, 'MMMM YYYY', 'MMM YYYY'],\n date: [InputAutocompleteFormats.date, 'D/M/YYYY'],\n dateTime: [InputAutocompleteFormats.dateTime, 'D/M/YYYY hh:mm A'],\n};\n\nconst isDigit = (symbol?: string) => symbol?.match(/\\d/);\n\nconst isInFormatSoFar = (format: string, value: string) => {\n if (value.length <= format.length) {\n const valueArr = value.split('');\n\n return valueArr.every((valueChar, pos) => {\n const formatChar = format[pos];\n\n if (NumericLetters.includes(formatChar)) {\n return isDigit(valueChar);\n }\n\n if (formatChar === 'A') {\n const lcChar = valueChar.toLocaleLowerCase();\n return lcChar === 'a' || lcChar === 'p';\n }\n\n return formatChar === valueChar;\n });\n }\n\n return false;\n};\n\nconst getSeparator = (format: string, startIndex: number) => {\n return format.substring(startIndex).match(GetSeparatorRegex)?.[0] || '';\n};\n\nexport const autocompleteValue = ({\n value,\n type,\n range,\n prevValue,\n}: {\n type: DatePickerType;\n range?: boolean;\n value: string;\n prevValue: string;\n}) => {\n const formatPart = InputAutocompleteFormats[type];\n const format = range ? `${formatPart} - ${formatPart}` : formatPart;\n\n const preparedValue = value.toLocaleLowerCase().replace(/([ap])m/gi, '$1');\n\n if (\n value.length <= prevValue.length ||\n !isInFormatSoFar(format, preparedValue) ||\n format.length <= preparedValue.length\n ) {\n return value;\n }\n\n // Only autocomplete if user types something\n // Check if conforms to format so far\n // Adding separators if needed\n const separator = getSeparator(format, preparedValue.length);\n\n return `${value}${separator}`;\n};\n\nexport const isSameMonth = (a?: Date, b?: Date) =>\n !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a?: Date, b?: Date) => isSameMonth(a, b) && a?.getDate() === b?.getDate();\n\nexport const getMinDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a < b ? a : b;\n }\n\n return a || b;\n};\n\nexport const getMaxDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a > b ? a : b;\n }\n\n return a || b;\n};\n\nexport const MonthOptions = [\n { id: 1, title: 'Jan', fullTitle: 'January' },\n { id: 2, title: 'Feb', fullTitle: 'February' },\n { id: 3, title: 'Mar', fullTitle: 'March' },\n { id: 4, title: 'Apr', fullTitle: 'April' },\n { id: 5, title: 'May', fullTitle: 'May' },\n { id: 6, title: 'Jun', fullTitle: 'June' },\n { id: 7, title: 'Jul', fullTitle: 'July' },\n { id: 8, title: 'Aug', fullTitle: 'August' },\n { id: 9, title: 'Sep', fullTitle: 'September' },\n { id: 10, title: 'Oct', fullTitle: 'October' },\n { id: 11, title: 'Nov', fullTitle: 'November' },\n { id: 12, title: 'Dec', fullTitle: 'December' },\n];\n\nexport type DatePickerCalendarView = 'year' | 'month';\n\nexport const getDateWithSameTime = (date: Date, timeDate?: Date) =>\n new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n timeDate?.getHours() || 0,\n timeDate?.getMinutes() || 0,\n timeDate?.getSeconds() || 0\n );\n"],"names":["DefaultFormatByType","date","dateTime","month","DefaultFormatByTypeRange","getDefaultFormat","type","range","NumericLetters","AllLetters","concat","GetSeparatorRegex","RegExp","join","InputAutocompleteFormats","InputParseFormats","autocompleteValue","_ref","value","prevValue","formatPart","format","preparedValue","toLocaleLowerCase","replace","length","split","every","valueChar","pos","symbol","formatChar","includes","match","lcChar","isInFormatSoFar","separator","startIndex","_format$substring$mat","substring","getSeparator","isSameMonth","a","b","getFullYear","getMonth","isSameDay","getDate","getMinDate","getMaxDate","MonthOptions","id","title","fullTitle","getDateWithSameTime","timeDate","Date","getHours","getMinutes","getSeconds"],"mappings":"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"}
@@ -50,6 +50,7 @@ export type PopoverProps = {
50
50
  */
51
51
  type?: PaperProps['type'];
52
52
  className?: string;
53
+ popperClassName?: string;
53
54
  };
54
55
  export declare const Popover: import("react").ForwardRefExoticComponent<PopoverProps & import("react").RefAttributes<HTMLDivElement>>;
55
56
  //# sourceMappingURL=Popover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/Popover/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,SAAS,EAKV,MAAM,OAAO,CAAC;AAKf,OAAO,EAAU,WAAW,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAS7C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,KAAK,IAAI,CAAC;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,OAAO,yGAmInB,CAAC"}
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/Popover/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,SAAS,EAKV,MAAM,OAAO,CAAC;AAKf,OAAO,EAAU,WAAW,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAS7C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,KAAK,IAAI,CAAC;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,OAAO,yGAoInB,CAAC"}