@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.
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarControls/CalendarControls.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/CalendarGrid/CalendarGrid.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/DatePicker.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/DatePicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/DatePicker.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.scss.js +2 -0
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.scss.js.map +1 -0
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
- package/cjs-bundle/componentsV2/Popover/Popover.js +1 -1
- package/cjs-bundle/componentsV2/Popover/Popover.js.map +1 -1
- package/cjs-bundle/componentsV2/ToggleButtons/ToggleButtons.scss.js +1 -1
- package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
- package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/componentsV2/DatePicker/CalendarControls/CalendarControls.d.ts.map +1 -1
- package/componentsV2/DatePicker/CalendarControls/CalendarControls.js +1 -1
- package/componentsV2/DatePicker/CalendarControls/CalendarControls.js.map +1 -1
- package/componentsV2/DatePicker/CalendarControls/CalendarControls.scss.js +1 -1
- package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js +1 -1
- package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.js.map +1 -1
- package/componentsV2/DatePicker/CalendarGrid/CalendarGrid.scss.js +1 -1
- package/componentsV2/DatePicker/DatePicker.d.ts +4 -1
- package/componentsV2/DatePicker/DatePicker.d.ts.map +1 -1
- package/componentsV2/DatePicker/DatePicker.js +1 -1
- package/componentsV2/DatePicker/DatePicker.js.map +1 -1
- package/componentsV2/DatePicker/DatePicker.scss.js +1 -1
- package/componentsV2/DatePicker/Input/Input.d.ts +4 -2
- package/componentsV2/DatePicker/Input/Input.d.ts.map +1 -1
- package/componentsV2/DatePicker/Input/Input.js +1 -1
- package/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/componentsV2/DatePicker/Input/Input.scss.js +2 -0
- package/componentsV2/DatePicker/Input/Input.scss.js.map +1 -0
- package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts +7 -5
- package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/componentsV2/DatePicker/utils.d.ts +2 -2
- package/componentsV2/DatePicker/utils.d.ts.map +1 -1
- package/componentsV2/DatePicker/utils.js +1 -1
- package/componentsV2/DatePicker/utils.js.map +1 -1
- package/componentsV2/Popover/Popover.d.ts +1 -0
- package/componentsV2/Popover/Popover.d.ts.map +1 -1
- package/componentsV2/Popover/Popover.js +1 -1
- package/componentsV2/Popover/Popover.js.map +1 -1
- package/componentsV2/ToggleButtons/ToggleButtons.scss.js +1 -1
- package/mcp-server/server.mjs +7 -2
- package/package.json +1 -1
- 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","jsxs","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","jsxs","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
|
-
"use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')(".DatePicker_popover__sSk1S{box-shadow:0 8px 24px 0 rgba(0,0,0,.24)!important;
|
|
1
|
+
"use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')(".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}"),module.exports={spacing:"8",popover:"DatePicker_popover__sSk1S",popper:"DatePicker_popper__BAftf",controls:"DatePicker_controls__Hb-Sw",grid:"DatePicker_grid__c37ss"};
|
|
2
2
|
//# sourceMappingURL=DatePicker.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var s=require("@babel/runtime/helpers/slicedToArray"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),s=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/helpers/toConsumableArray"),o=require("react"),r=require("moment"),c=require("classnames"),i=require("../../TextInputNext/TextInputNext.js"),t=require("../../TextInput/TextInput.js"),u=require("../utils.js"),a=require("../../Popper/Popper.js"),l=require("./Input.scss.js"),m=require("../../../icons/iconParkIcons.js");require("../../../icons/customIcons/icons/AddMessage.js"),require("../../../icons/customIcons/icons/DragOne.js"),require("../../../icons/customIcons/icons/Attention.js"),require("../../../icons/customIcons/icons/Collapse.js"),require("../../../icons/customIcons/icons/Dashboard.js"),require("../../../icons/customIcons/icons/Expand.js"),require("../../../icons/customIcons/icons/FolderClosed.js"),require("../../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../../icons/customIcons/icons/FolderOpened.js"),require("../../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../../icons/customIcons/icons/LessOrEqual.js"),require("../../../icons/customIcons/icons/Search.js"),require("../../../icons/customIcons/icons/SearchOne.js"),require("../../../icons/customIcons/icons/Wellhub.js"),require("../../../icons/customIcons/icons/MultiRuler.js"),require("../../../icons/customIcons/icons/Checkbox.js"),require("../../../icons/customIcons/icons/CheckboxChecked.js"),require("../../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../../icons/customIcons/icons/Radio.js"),require("../../../icons/customIcons/icons/RadioChecked.js"),require("../../../icons/customIcons/icons/SimulFrac.js"),require("../../../icons/customIcons/icons/ZipperFrac.js"),require("../../../icons/customIcons/icons/CautionFilled.js"),require("../../../icons/customIcons/icons/InfoRounded.js"),require("../../../icons/customIcons/icons/FlameFilled.js"),require("../../../icons/customIcons/icons/MoreApp.js"),require("../../../icons/customIcons/icons/Pad.js"),require("../../../icons/customIcons/icons/DrilloutUnit.js"),require("../../../icons/customIcons/icons/FracFleet.js"),require("../../../icons/customIcons/icons/Global.js"),require("../../../icons/customIcons/icons/Program.js"),require("../../../icons/customIcons/icons/Rig.js"),require("../../../icons/customIcons/icons/Well.js"),require("../../../icons/customIcons/icons/Gap.js"),require("../../../icons/customIcons/icons/Pin.js"),require("../../../icons/customIcons/icons/CloseOneFilled.js"),require("../../../icons/customIcons/icons/AttentionFilled.js"),require("../../../icons/customIcons/icons/CheckOneFilled.js"),require("../../../icons/customIcons/icons/Archive.js"),require("../../../icons/customIcons/icons/ArchiveCancel.js"),require("../../../icons/customIcons/icons/Unarchive.js"),require("../../../icons/customIcons/icons/Archived.js"),require("../../../icons/customIcons/icons/InterventionUnit.js"),require("../../../icons/customIcons/icons/CloudDelete.js"),require("../../../icons/customIcons/icons/Lasso.js"),require("../../../icons/customIcons/icons/Radius.js"),require("../../../icons/customIcons/icons/ErrorOps.js"),require("../../../icons/customIcons/icons/DataTypeOps.js"),require("../../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../../icons/customIcons/icons/CalibrationOps.js"),require("../../../icons/customIcons/icons/CriticalOps.js"),require("../../../icons/customIcons/icons/Company.js"),require("../../../icons/customIcons/icons/ArchiveOne.js"),require("../../../icons/customIcons/icons/ParseBotFusion.js"),require("../../../icons/customIcons/icons/Connect.js"),require("../../../icons/customIcons/icons/PuzzleOne.js"),require("../../../icons/customIcons/icons/Feed.js"),require("../../../icons/customIcons/icons/Prompt.js"),require("../../../icons/customIcons/icons/Companies.js"),require("../../../icons/customIcons/icons/ClipboardAi.js"),require("../../../icons/customIcons/icons/Key.js"),require("../../../icons/customIcons/icons/AtSignCrossed.js"),require("../../../icons/customIcons/icons/MappingManual.js"),require("../../../icons/customIcons/icons/Mapping.js"),require("../../../icons/customIcons/icons/Metrics.js"),require("../../../icons/customIcons/icons/Drops.js"),require("../../../icons/customIcons/icons/ClipboardSearch.js"),require("../../../icons/customIcons/icons/Template.js"),require("../../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../../icons/customIcons/icons/UnitConversion.js"),require("../../../icons/customIcons/icons/NPT.js"),require("../../../icons/customIcons/icons/GuidedFrac.js");var j=require("react/jsx-runtime");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=d(e),I=d(s),f=d(n),q=d(r),b=d(c);function v(e,s){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);s&&(o=o.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),n.push.apply(n,o)}return n}function C(e){for(var s=1;s<arguments.length;s++){var n=null!=arguments[s]?arguments[s]:{};s%2?v(Object(n),!0).forEach((function(s){p.default(e,s,n[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(n,s))}))}return e}var h={flip:{enabled:!1}},O=function(e,s){return e?q.default(e).format(s):s},g=function(e,s){return(Array.isArray(e)?e:[e]).filter((function(e){return!!e})).map((function(e){return O(e,s)})).join(" - ")},x=function(e,s,n){var o=q.default(e,[s].concat(f.default(u.InputParseFormats[n]||[])),!0);return o.isValid()?o.toDate():void 0},y={small:l.small,medium:l.medium,large:l.large},P=o.forwardRef((function(e,s){var n=e.value,r=e.label,c=e.open,d=e.className,p=e.testId,f=e.format,q=e.placeholder,v=e.range,P=e.readOnly,F=e.type,A=e.setValue,D=e.focusOnClear,S=e.labelPlacement,k=e.size,N=void 0===k?"small":k,M=e.elementsClassNames,R=e.isNext,T=e.isOpen,w=e.clearable,E=e.rangeStep,z=e.setRangeStep,B=f||u.getDefaultFormat(F,v),L=g(n,B),V=o.useState(L),G=I.default(V,2),U=G[0],W=G[1],_=o.useState(n),K=I.default(_,2),Z=K[0],H=K[1],J=o.useRef(U),Q=o.useState(0),X=I.default(Q,2),Y=X[0],$=X[1],ee=o.useState(0),se=I.default(ee,2),ne=se[0],oe=se[1],re=o.useRef(null),ce=!!v&&U===L&&T;Z!==n&&(W(L),H(n),J.current=L);var ie=o.useCallback((function(e){if(""===e.trim())return null==A||A(void 0),W(""),void(J.current="");var s=u.autocompleteValue({type:F,range:v,value:e,prevValue:J.current});if(J.current=s,W(s),v){var n=s.split(/[-–—]/).map((function(e){return x(e.trim(),B,F)})).filter((function(e){return!!e}));if(2===n.length){var o=u.getMinDate(n[0],n[1]),r=u.getMaxDate(n[0],n[1]);o&&r&&(null==A||A([o,r]))}}else{var c=x(s,B,F);c&&(null==A||A(c))}}),[B,v,A,F]),te=o.useCallback((function(e){e.target.select(),c()}),[c]),ue=o.useCallback((function(){W(g(n,B)),J.current=""}),[n,B]),ae=o.useCallback((function(){null==A||A(void 0),W("")}),[A]),le=o.useMemo((function(){return C(C({},M),{},{prefix:b.default(null==M?void 0:M.prefix,ce&&l.prefix),input:b.default(null==M?void 0:M.input,ce&&l.rangeDefaultValue),inputContainer:b.default(null==M?void 0:M.inputContainer,l.inputContainer)})}),[ce,M]),me=o.useMemo((function(){return v?{onScroll:function(e){$(e.currentTarget.scrollLeft)}}:void 0}),[v]);return o.useEffect((function(){if(v){var e=new ResizeObserver((function(e){e.forEach((function(e){var s,n;return oe((null===(s=e.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return re.current&&e.observe(re.current),function(){e.disconnect()}}}),[v]),R?j.jsxs(j.Fragment,{children:[j.jsx(i.TextInputNext,{value:U,inputContainerRef:s,inputRef:re,label:r,onFocus:te,onBlur:ue,className:d,testId:p,suffix:j.jsx(m.CalendarThreeIcon,{}),placeholder:q,onChange:ie,readOnly:P,clearable:w,focusOnClear:D,labelPlacement:S,size:N,elementsClassNames:le,htmlAttributes:me}),j.jsx(a.Popper,{anchorEl:re.current,open:ce,placement:"top-start",className:l.popper,modifiers:h,children:j.jsx("div",{className:b.default(l.rangeOverlay,y[N]),style:{width:ne},children:j.jsx("div",{style:{marginLeft:-Y},children:Array.isArray(n)&&2===n.length&&j.jsxs(j.Fragment,{children:[j.jsx("span",{className:b.default(l.rangePart,"startDate"===E&&l.rangePartActive),onClick:function(){return z("startDate")},children:O(n[0],B)})," - ",j.jsx("span",{className:b.default(l.rangePart,"endDate"===E&&l.rangePartActive),onClick:function(){return z("endDate")},children:O(n[1],B)})]})})})})]}):j.jsx(t.TextInput,{value:U,ref:s,label:r,onFocus:c,onBlur:ue,forceLabelShrink:T,className:d,testId:p,suffix:j.jsx(m.CalendarThreeIcon,{}),placeholder:q,onChange:ie,readOnly:P,onClear:w?ae:void 0,focusOnClear:D})}));exports.Input=P;
|
|
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","jsx","rangeOverlay","style","width","marginLeft","jsxs","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require('./../../../ext-esm/style-inject/dist/style-inject.es.js')(".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)}"),module.exports={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"};
|
|
2
|
+
//# sourceMappingURL=Input.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,qBAAqB,yDAA4D;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),s=require("@babel/runtime/helpers/slicedToArray"),o=require("react"),n=require("classnames"),c=require("moment-timezone"),r=require("lodash"),i=require("../../TextInputNext/TextInputNext.js"),t=require("../../Text/Text.js"),u=require("../../ToggleButtons/ToggleButtons.js"),a=require("../utils.js"),l=require("../../Button/Button.js"),m=require("./TimePicker.scss.js"),d=require("../../../icons/iconParkIcons.js");require("../../../icons/customIcons/icons/AddMessage.js"),require("../../../icons/customIcons/icons/DragOne.js"),require("../../../icons/customIcons/icons/Attention.js"),require("../../../icons/customIcons/icons/Collapse.js"),require("../../../icons/customIcons/icons/Dashboard.js"),require("../../../icons/customIcons/icons/Expand.js"),require("../../../icons/customIcons/icons/FolderClosed.js"),require("../../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../../icons/customIcons/icons/FolderOpened.js"),require("../../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../../icons/customIcons/icons/LessOrEqual.js"),require("../../../icons/customIcons/icons/Search.js"),require("../../../icons/customIcons/icons/SearchOne.js"),require("../../../icons/customIcons/icons/Wellhub.js"),require("../../../icons/customIcons/icons/MultiRuler.js"),require("../../../icons/customIcons/icons/Checkbox.js"),require("../../../icons/customIcons/icons/CheckboxChecked.js"),require("../../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../../icons/customIcons/icons/Radio.js"),require("../../../icons/customIcons/icons/RadioChecked.js"),require("../../../icons/customIcons/icons/SimulFrac.js"),require("../../../icons/customIcons/icons/ZipperFrac.js"),require("../../../icons/customIcons/icons/CautionFilled.js"),require("../../../icons/customIcons/icons/InfoRounded.js"),require("../../../icons/customIcons/icons/FlameFilled.js"),require("../../../icons/customIcons/icons/MoreApp.js"),require("../../../icons/customIcons/icons/Pad.js"),require("../../../icons/customIcons/icons/DrilloutUnit.js"),require("../../../icons/customIcons/icons/FracFleet.js"),require("../../../icons/customIcons/icons/Global.js"),require("../../../icons/customIcons/icons/Program.js"),require("../../../icons/customIcons/icons/Rig.js"),require("../../../icons/customIcons/icons/Well.js"),require("../../../icons/customIcons/icons/Gap.js"),require("../../../icons/customIcons/icons/Pin.js"),require("../../../icons/customIcons/icons/CloseOneFilled.js"),require("../../../icons/customIcons/icons/AttentionFilled.js"),require("../../../icons/customIcons/icons/CheckOneFilled.js"),require("../../../icons/customIcons/icons/Archive.js"),require("../../../icons/customIcons/icons/ArchiveCancel.js"),require("../../../icons/customIcons/icons/Unarchive.js"),require("../../../icons/customIcons/icons/Archived.js"),require("../../../icons/customIcons/icons/InterventionUnit.js"),require("../../../icons/customIcons/icons/CloudDelete.js"),require("../../../icons/customIcons/icons/Lasso.js"),require("../../../icons/customIcons/icons/Radius.js"),require("../../../icons/customIcons/icons/ErrorOps.js"),require("../../../icons/customIcons/icons/DataTypeOps.js"),require("../../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../../icons/customIcons/icons/CalibrationOps.js"),require("../../../icons/customIcons/icons/CriticalOps.js"),require("../../../icons/customIcons/icons/Company.js"),require("../../../icons/customIcons/icons/ArchiveOne.js"),require("../../../icons/customIcons/icons/ParseBotFusion.js"),require("../../../icons/customIcons/icons/Connect.js"),require("../../../icons/customIcons/icons/PuzzleOne.js"),require("../../../icons/customIcons/icons/Feed.js"),require("../../../icons/customIcons/icons/Prompt.js"),require("../../../icons/customIcons/icons/Companies.js"),require("../../../icons/customIcons/icons/ClipboardAi.js"),require("../../../icons/customIcons/icons/Key.js"),require("../../../icons/customIcons/icons/AtSignCrossed.js"),require("../../../icons/customIcons/icons/MappingManual.js"),require("../../../icons/customIcons/icons/Mapping.js"),require("../../../icons/customIcons/icons/Metrics.js"),require("../../../icons/customIcons/icons/Drops.js"),require("../../../icons/customIcons/icons/ClipboardSearch.js"),require("../../../icons/customIcons/icons/Template.js"),require("../../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../../icons/customIcons/icons/UnitConversion.js"),require("../../../icons/customIcons/icons/NPT.js"),require("../../../icons/customIcons/icons/GuidedFrac.js");var j=require("react/jsx-runtime");function q(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var I=q(e),p=q(s),f=q(n),h=q(c);function v(e,s){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);s&&(n=n.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),o.push.apply(o,n)}return o}function b(e){for(var s=1;s<arguments.length;s++){var o=null!=arguments[s]?arguments[s]:{};s%2?v(Object(o),!0).forEach((function(s){I.default(e,s,o[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach((function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(o,s))}))}return e}var g=[{value:"am",label:"AM"},{value:"pm",label:"PM"}],C=function(e){return e.replace(/[^\d]/g,"").substring(0,2)},x=function(e){return Number(e)>=0&&Number(e)<=12},O=function(e){return Number(e)>=0&&Number(e)<60},y=O,T=function(e){return e.getTime()-h.default(e).startOf("day").toDate().getTime()},N=function(e){return void 0!==e?r.padStart(String(e),2,"0"):""},D=function(e){return"12"===e?"00":e};exports.TimePicker=function(e){var s=e.value,n=e.onChange,c=e.minDate,r=e.maxDate,q=e.saveTime,I=e.goToToday,v=e.clear,F=!s,P=o.useRef(null),k=o.useRef(null),S=o.useRef(null),M=o.useRef(),A=o.useMemo((function(){var e=s?T(s)>=432e5?"pm":"am":void 0,o="pm"===e?12:0,n=s?s.getHours()-o:void 0;return{hours:N(void 0!==n&&0===n?12:n),minutes:N(null==s?void 0:s.getMinutes()),seconds:N(null==s?void 0:s.getSeconds()),partOfDay:e}}),[s]),B=o.useState(A.hours),R=p.default(B,2),z=R[0],w=R[1],E=o.useState(A.minutes),H=p.default(E,2),G=H[0],U=H[1],L=o.useState(A.seconds),W=p.default(L,2),_=W[0],K=W[1];o.useEffect((function(){M.current!==P.current&&w(A.hours),M.current!==k.current&&U(A.minutes),M.current!==S.current&&K(A.seconds)}),[A.hours,A.minutes,A.seconds]);var Z=o.useMemo((function(){var e=a.isSameDay(c,s)&&h.default(c).format("hh:mm:ss A"),o=a.isSameDay(r,s)&&h.default(r).format("hh:mm:ss A");return e&&o?"In ".concat(e," - ").concat(o," range"):e?"Can’t be earlier than ".concat(e):o?"Can’t be later than ".concat(o):void 0}),[r,c,s]),J=o.useMemo((function(){return g.map((function(e){var o="am"===e.value&&!!c&&a.isSameDay(s,c)&&T(c)>=432e5,n="pm"===e.value&&!!r&&a.isSameDay(s,r)&&T(r)<432e5;return b(b({},e),{},{disabled:F||o||n})}))}),[F,r,c,s]),Q=o.useCallback((function(e,o){if(s){var c=new Date(s);if("hours"===e&&x(o)){var r="pm"===A.partOfDay?12:0;c.setHours(r+Number(o))}else if("minutes"===e&&O(o))c.setMinutes(Number(o));else if("seconds"===e&&y(o))c.setSeconds(Number(o));else if("partOfDay"===e&&("am"===o||"pm"===o)){var i=c.getHours()%12;c.setHours(("pm"===o?12:0)+i)}Math.floor(c.getTime()/1e3)!==Math.floor(s.getTime()/1e3)&&n(c)}}),[A.partOfDay,n,s]),V=o.useCallback((function(e){e.target.select(),M.current=e.target}),[]),X=o.useCallback((function(e){var s=C(e.target.value);if(e.target===P.current){var o=D(s),n=x(o)?N(o):A.hours;w(n),Q("hours",n)}if(e.target===k.current){var c=O(s)?N(s):A.minutes;U(c),Q("minutes",c)}if(e.target===S.current){var r=y(s)?N(s):A.seconds;K(r),Q("seconds",r)}M.current=void 0}),[A.hours,A.minutes,A.seconds,Q]),Y=o.useCallback((function(e){var s,o=C(e),n=D(o);(w(o),2===o.length&&x(o))&&(Q("hours",n),null===(s=k.current)||void 0===s||s.focus())}),[Q]),$=o.useCallback((function(e){var s,o=C(e);(U(o),2===o.length&&O(o))&&(Q("minutes",o),null===(s=S.current)||void 0===s||s.focus())}),[Q]),ee=o.useCallback((function(e){var s=C(e);K(s),y(s)&&Q("seconds",s)}),[Q]),se=o.useCallback((function(e){Q("partOfDay",e)}),[Q]),oe=Number(null==s?void 0:s.getTime())>Number(null==r?void 0:r.getTime())||Number(null==s?void 0:s.getTime())<Number(null==c?void 0:c.getTime()),ne=!x(z)||oe,ce=!O(G)||oe,re=!y(_)||oe;return j.jsxs(j.Fragment,{children:[j.jsxs("div",{className:f.default(m.timePicker),children:[j.jsxs(t.Text,{className:m.header,size:14,children:[j.jsx("span",{className:f.default(m.headerText,F&&m.disabled),children:"Time"}),Z&&j.jsxs(j.Fragment,{children:[j.jsx(d.InfoIcon,{className:m.constraintIcon,size:16}),Z]})]}),j.jsx(i.TextInputNext,{placeholder:"HH",className:m.input,disabled:F,value:z,onChange:Y,status:ne?"error":void 0,inputRef:P,onFocus:V,onBlur:X}),j.jsx(t.Text,{color:"T9",size:14,children:":"}),j.jsx(i.TextInputNext,{placeholder:"MM",className:m.input,disabled:F,value:G,onChange:$,status:ce?"error":void 0,inputRef:k,onFocus:V,onBlur:X}),j.jsx(t.Text,{color:"T9",size:14,children:":"}),j.jsx(i.TextInputNext,{placeholder:"SS",className:m.input,disabled:F,value:_,onChange:ee,status:re?"error":void 0,inputRef:S,onFocus:V,onBlur:X}),j.jsx(u.ToggleButtons,{options:J,className:m.tabs,size:"small",value:A.partOfDay,onChange:se})]}),j.jsxs("div",{className:m.footer,children:[I&&j.jsx(l.Button,{onClick:I,type:"tertiary",size:"small",children:"Today"}),j.jsxs("div",{className:m.actions,children:[v&&j.jsx(l.Button,{onClick:v,type:"tertiary",size:"small",disabled:!s,children:"Clear"}),j.jsx(l.Button,{onClick:q,type:"secondary",size:"small",disabled:!s||ne||ce||re,children:"Save"})]})]})]})};
|
|
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","hours12","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","jsx","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","_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","jsxs","className","classNames","styles","timePicker","Text","header","size","_jsx","jsx","headerText","InfoIcon","constraintIcon","TextInputNext","placeholder","input","status","inputRef","onFocus","onBlur","color","ToggleButtons","options","tabs","footer","Button","onClick","actions"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require('./../../../ext-esm/style-inject/dist/style-inject.es.js')(
|
|
1
|
+
"use strict";require('./../../../ext-esm/style-inject/dist/style-inject.es.js')(".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}"),module.exports={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"};
|
|
2
2
|
//# sourceMappingURL=TimePicker.scss.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});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=["D","M","Y","h","m","s","S"],n=[].concat(l,["A"]),i=new RegExp("^([^".concat(n.join(""),"]+)"),"gi"),r={month:"MM/YYYY",date:"DD/MM/YYYY",dateTime:"DD/MM/YYYY hh:mm A"},o={month:[r.month,"MMMM YYYY","MMM YYYY"],date:[r.date,"D/M/YYYY"],dateTime:[r.dateTime,"D/M/YYYY hh:mm A"]},u=function(t,e){return!!t&&!!e&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()};exports.DefaultFormatByType=t,exports.DefaultFormatByTypeRange=e,exports.InputAutocompleteFormats=r,exports.InputParseFormats=o,exports.MonthOptions=[{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"}],exports.autocompleteValue=function(t){var e=t.value,n=t.type,o=t.range,u=t.prevValue,a=r[n],Y=o?"".concat(a," - ").concat(a):a,M=e.toLocaleLowerCase().replace(/([ap])m/gi,"$1");if(e.length<=u.length||!function(t,e){return e.length<=t.length&&e.split("").every((function(e,n){var i,r=t[n];if(l.includes(r))return null==(i=e)?void 0:i.match(/\d/);if("A"===r){var o=e.toLocaleLowerCase();return"a"===o||"p"===o}return r===e}))}(Y,M)||Y.length<=M.length)return e;var c=function(t,e){var l;return(null===(l=t.substring(e).match(i))||void 0===l?void 0:l[0])||""}(Y,M.length);return"".concat(e).concat(c)},exports.getDateWithSameTime=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)},exports.getDefaultFormat=function(l,n){return(n?e:t)[l]},exports.getMaxDate=function(t,e){return t&&e?t>e?t:e:t||e},exports.getMinDate=function(t,e){return t&&e?t<e?t:e:t||e},exports.isSameDay=function(t,e){return u(t,e)&&(null==t?void 0:t.getDate())===(null==e?void 0:e.getDate())},exports.isSameMonth=u;
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/componentsV2/DatePicker/utils.tsx"],"sourcesContent":["
|
|
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","NumericLetters","AllLetters","concat","GetSeparatorRegex","RegExp","join","InputAutocompleteFormats","InputParseFormats","isSameMonth","a","b","getFullYear","getMonth","id","title","fullTitle","_ref","value","type","range","prevValue","formatPart","format","preparedValue","toLocaleLowerCase","replace","length","split","every","valueChar","pos","symbol","formatChar","includes","match","lcChar","isInFormatSoFar","separator","startIndex","_format$substring$mat","substring","getSeparator","timeDate","Date","getDate","getHours","getMinutes","getSeconds"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("react"),n=require("@material-ui/core"),t=require("classnames"),o=require("../Popper/Popper.js"),s=require("../Paper/Paper.js"),a=require("../utils.js"),i=require("./utils.js"),c=require("./Popover.scss.js");require("../../constants/goals.js"),require("../../constants/segment.js"),require("../../constants/alerts.js"),require("../../constants/apps.js"),require("../../constants/drillstring.js"),require("../../constants/completion.js"),require("../../constants/appPackages.js"),require("../../constants/notifications.js"),require("../../constants/feed.js"),require("../../constants/bha.js"),require("../../constants/corvaCompanyId.js"),require("lodash"),require("../../components/GradientManager/configuration/constants.js");var u=require("../../constants/attachments.js"),l=require("react/jsx-runtime");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),f=p(t);function v(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function j(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?v(Object(n),!0).forEach((function(r){d.default(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("react"),n=require("@material-ui/core"),t=require("classnames"),o=require("../Popper/Popper.js"),s=require("../Paper/Paper.js"),a=require("../utils.js"),i=require("./utils.js"),c=require("./Popover.scss.js");require("../../constants/goals.js"),require("../../constants/segment.js"),require("../../constants/alerts.js"),require("../../constants/apps.js"),require("../../constants/drillstring.js"),require("../../constants/completion.js"),require("../../constants/appPackages.js"),require("../../constants/notifications.js"),require("../../constants/feed.js"),require("../../constants/bha.js"),require("../../constants/corvaCompanyId.js"),require("lodash"),require("../../components/GradientManager/configuration/constants.js");var u=require("../../constants/attachments.js"),l=require("react/jsx-runtime");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),f=p(t);function v(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function j(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?v(Object(n),!0).forEach((function(r){d.default(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var m=r.forwardRef((function(e,t){var p=e.children,d=e.open,v=e.onClose,m=e.className,b=e.closeOnBackdropClick,y=void 0===b||b,q=e.closeOnEscape,O=void 0===q||q,P=e.backdrop,h=void 0===P||P,E=e.anchorEl,g=e.preventScroll,w=void 0===g||g,k=e.placement,x=void 0===k?"bottom-start":k,C=e.onMouseLeave,M=e.onMouseEnter,N=e.flip,R=void 0===N||N,D=e.preventOverflow,S=void 0===D||D,G=e.container,A=e.animate,L=void 0===A||A,T=e.type,I=void 0===T?"popover":T,_=e.popperClassName,B=r.useRef(null),U=r.useRef(new ResizeObserver((function(){var e;null===(e=B.current)||void 0===e||e.scheduleUpdate()}))),z=r.useCallback((function(){v&&y&&v("backdropClick")}),[v,y]);r.useEffect((function(){var e=function(e){if("Escape"===e.key||"Esc"===e.key){if(document.querySelector("[".concat(u.DRAGGING_ATTRIBUTE,"]")))return;null==v||v("escapeKey")}};return d&&O?(document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}):function(){}}),[v,O,d]),r.useEffect((function(){return d&&w?i.disableScroll(document.body):function(){}}),[d,w]);var F=r.useMemo((function(){return{preventOverflow:{enabled:S,padding:0,boundariesElement:"viewport"},flip:{enabled:R}}}),[R,S]),K=null!=G?G:a.getDefaultPopperContainer(E);return l.jsxs(l.Fragment,{children:[h&&l.jsx(o.Popper,{open:d,className:c.root,container:K,children:l.jsx("div",{className:c.backdrop,onClick:z})}),l.jsx(o.Popper,{open:d,anchorEl:E,placement:x,className:f.default(c.root,_),transition:!0,popperRef:B,modifiers:F,container:K,children:function(e){var r=e.TransitionProps;return l.jsx(n.Grow,j(j({},r),{},{timeout:L?"auto":0,disableStrictModeCompat:!0,onEntered:function(){for(var e,n=arguments.length,t=new Array(n),o=0;o<n;o++)t[o]=arguments[o];null==r||null===(e=r.onEntered)||void 0===e||e.call.apply(e,[r].concat(t)),U.current.observe(t[0])},onExit:function(){for(var e,n=arguments.length,t=new Array(n),o=0;o<n;o++)t[o]=arguments[o];null==r||null===(e=r.onExit)||void 0===e||e.call.apply(e,[r].concat(t)),U.current.disconnect()},children:l.jsx(s.Paper,{className:f.default(c.paper,m),onMouseEnter:M,onMouseLeave:C,ref:t,type:I,children:p})}))}})]})}));exports.Popover=m;
|
|
2
2
|
//# sourceMappingURL=Popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sources":["../../../../src/componentsV2/Popover/Popover.tsx"],"sourcesContent":["import {\n forwardRef,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { Grow } from '@material-ui/core';\nimport classNames from 'classnames';\nimport PopperJs from 'popper.js';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { Paper, PaperProps } from '../Paper';\nimport { getDefaultPopperContainer } from '../utils';\n\nimport { disableScroll } from './utils';\n\nimport styles from './Popover.scss';\n\nimport { DRAGGING_ATTRIBUTE } from '~/constants';\n\nexport type PopoverProps = {\n open: boolean;\n\n placement?: PopperProps['placement'];\n\n /**\n * A HTML element, a function that returns it, or a virtual element exposing\n * `getBoundingClientRect` (to anchor at a point). Sets the position of the popover.\n */\n anchorEl?: PopperProps['anchorEl'];\n\n /**\n * The content of the component.\n */\n children?: ReactNode;\n onClose?: (reason: 'backdropClick' | 'escapeKey') => void;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n\n /**\n * Determines if backdrop should be rendered\n */\n backdrop?: boolean;\n\n /**\n * Prevents scroll when open\n */\n preventScroll?: boolean;\n\n onMouseEnter?: MouseEventHandler;\n onMouseLeave?: MouseEventHandler;\n\n /**\n * Controls if Popover should stay inside its constraining element\n */\n preventOverflow?: boolean;\n /**\n * Controls if Popover should flip to opposite side if there's no space to fit it\n */\n flip?: boolean;\n\n /**\n * Element where Popper will mount.\n *\n * Defaults to the closest ancestor `Modal` root (if `anchorEl` is inside one), falling back to\n * `document.body`.\n */\n container?: HTMLElement;\n\n /**\n * Controls whether popover should animate itself\n */\n animate?: boolean;\n\n /**\n * Controls paper's background depending on application: `menu` should be used for dropdown menus (with selectable options as opposed to arbitrary content)\n */\n type?: PaperProps['type'];\n\n className?: string;\n};\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n open,\n onClose,\n className,\n closeOnBackdropClick = true,\n closeOnEscape = true,\n backdrop = true,\n anchorEl,\n preventScroll = true,\n placement = 'bottom-start',\n onMouseLeave,\n onMouseEnter,\n flip = true,\n preventOverflow = true,\n container,\n animate = true,\n type = 'popover',\n },\n ref\n ) => {\n const popperRef = useRef<PopperJs>(null);\n const observerRef = useRef(\n new ResizeObserver(() => {\n popperRef.current?.scheduleUpdate();\n })\n );\n\n const backdropClickCloseHandler = useCallback(() => {\n if (onClose && closeOnBackdropClick) {\n onClose('backdropClick');\n }\n }, [onClose, closeOnBackdropClick]);\n\n // Escape key close\n useEffect(() => {\n const handler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n if (document.querySelector(`[${DRAGGING_ATTRIBUTE}]`)) return;\n\n onClose?.('escapeKey');\n }\n };\n\n if (open && closeOnEscape) {\n document.addEventListener('keydown', handler);\n\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }\n\n return () => {};\n }, [onClose, closeOnEscape, open]);\n\n // Block scrolling\n useEffect(() => {\n if (open && preventScroll) {\n return disableScroll(document.body);\n }\n\n return () => {};\n }, [open, preventScroll]);\n\n const modifiers = useMemo(\n () => ({\n preventOverflow: {\n enabled: preventOverflow,\n padding: 0,\n boundariesElement: 'viewport',\n // escapeWithReference: true,\n // TODO modify this/add own modifier so when escapeWithReference===true, we still try to fit popper in boundary\n // See https://github.com/floating-ui/floating-ui/blob/v1.16.1/packages/popper/src/modifiers/preventOverflow.js\n },\n flip: {\n enabled: flip,\n },\n }),\n [flip, preventOverflow]\n );\n\n const resolvedContainer = container ?? getDefaultPopperContainer(anchorEl);\n\n return (\n <>\n {backdrop && (\n <Popper open={open} className={styles.root} container={resolvedContainer}>\n <div className={styles.backdrop} onClick={backdropClickCloseHandler} />\n </Popper>\n )}\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement={placement}\n className={styles.root}\n transition\n popperRef={popperRef}\n modifiers={modifiers}\n container={resolvedContainer}\n >\n {({ TransitionProps }) => (\n <Grow\n {...TransitionProps}\n timeout={animate ? 'auto' : 0}\n disableStrictModeCompat\n onEntered={(...args) => {\n TransitionProps?.onEntered?.(...args);\n observerRef.current.observe(args[0]);\n }}\n onExit={(...args) => {\n TransitionProps?.onExit?.(...args);\n observerRef.current.disconnect();\n }}\n >\n <Paper\n className={classNames(styles.paper, className)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={ref}\n type={type}\n >\n {children}\n </Paper>\n </Grow>\n )}\n </Popper>\n </>\n );\n }\n);\n"],"names":["Popover","forwardRef","_ref","ref","children","open","onClose","className","_ref$closeOnBackdropC","closeOnBackdropClick","_ref$closeOnEscape","closeOnEscape","_ref$backdrop","backdrop","anchorEl","_ref$preventScroll","preventScroll","_ref$placement","placement","onMouseLeave","onMouseEnter","_ref$flip","flip","_ref$preventOverflow","preventOverflow","container","_ref$animate","animate","_ref$type","type","popperRef","useRef","observerRef","ResizeObserver","_popperRef$current","current","scheduleUpdate","backdropClickCloseHandler","useCallback","useEffect","handler","event","key","document","querySelector","DRAGGING_ATTRIBUTE","addEventListener","removeEventListener","disableScroll","body","modifiers","useMemo","enabled","padding","boundariesElement","resolvedContainer","getDefaultPopperContainer","_jsxs","_Fragment","_jsx","jsx","Popper","styles","root","onClick","transition","_ref2","TransitionProps","Grow","_objectSpread","timeout","disableStrictModeCompat","onEntered","_TransitionProps$onEn","_len","arguments","length","args","Array","_key","observe","onExit","_TransitionProps$onEx","_len2","_key2","disconnect","Paper","
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../../../src/componentsV2/Popover/Popover.tsx"],"sourcesContent":["import {\n forwardRef,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { Grow } from '@material-ui/core';\nimport classNames from 'classnames';\nimport PopperJs from 'popper.js';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { Paper, PaperProps } from '../Paper';\nimport { getDefaultPopperContainer } from '../utils';\n\nimport { disableScroll } from './utils';\n\nimport styles from './Popover.scss';\n\nimport { DRAGGING_ATTRIBUTE } from '~/constants';\n\nexport type PopoverProps = {\n open: boolean;\n\n placement?: PopperProps['placement'];\n\n /**\n * A HTML element, a function that returns it, or a virtual element exposing\n * `getBoundingClientRect` (to anchor at a point). Sets the position of the popover.\n */\n anchorEl?: PopperProps['anchorEl'];\n\n /**\n * The content of the component.\n */\n children?: ReactNode;\n onClose?: (reason: 'backdropClick' | 'escapeKey') => void;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n\n /**\n * Determines if backdrop should be rendered\n */\n backdrop?: boolean;\n\n /**\n * Prevents scroll when open\n */\n preventScroll?: boolean;\n\n onMouseEnter?: MouseEventHandler;\n onMouseLeave?: MouseEventHandler;\n\n /**\n * Controls if Popover should stay inside its constraining element\n */\n preventOverflow?: boolean;\n /**\n * Controls if Popover should flip to opposite side if there's no space to fit it\n */\n flip?: boolean;\n\n /**\n * Element where Popper will mount.\n *\n * Defaults to the closest ancestor `Modal` root (if `anchorEl` is inside one), falling back to\n * `document.body`.\n */\n container?: HTMLElement;\n\n /**\n * Controls whether popover should animate itself\n */\n animate?: boolean;\n\n /**\n * Controls paper's background depending on application: `menu` should be used for dropdown menus (with selectable options as opposed to arbitrary content)\n */\n type?: PaperProps['type'];\n\n className?: string;\n popperClassName?: string;\n};\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n open,\n onClose,\n className,\n closeOnBackdropClick = true,\n closeOnEscape = true,\n backdrop = true,\n anchorEl,\n preventScroll = true,\n placement = 'bottom-start',\n onMouseLeave,\n onMouseEnter,\n flip = true,\n preventOverflow = true,\n container,\n animate = true,\n type = 'popover',\n popperClassName,\n },\n ref\n ) => {\n const popperRef = useRef<PopperJs>(null);\n const observerRef = useRef(\n new ResizeObserver(() => {\n popperRef.current?.scheduleUpdate();\n })\n );\n\n const backdropClickCloseHandler = useCallback(() => {\n if (onClose && closeOnBackdropClick) {\n onClose('backdropClick');\n }\n }, [onClose, closeOnBackdropClick]);\n\n // Escape key close\n useEffect(() => {\n const handler = (event: KeyboardEvent) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n if (document.querySelector(`[${DRAGGING_ATTRIBUTE}]`)) return;\n\n onClose?.('escapeKey');\n }\n };\n\n if (open && closeOnEscape) {\n document.addEventListener('keydown', handler);\n\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }\n\n return () => {};\n }, [onClose, closeOnEscape, open]);\n\n // Block scrolling\n useEffect(() => {\n if (open && preventScroll) {\n return disableScroll(document.body);\n }\n\n return () => {};\n }, [open, preventScroll]);\n\n const modifiers = useMemo(\n () => ({\n preventOverflow: {\n enabled: preventOverflow,\n padding: 0,\n boundariesElement: 'viewport',\n // escapeWithReference: true,\n // TODO modify this/add own modifier so when escapeWithReference===true, we still try to fit popper in boundary\n // See https://github.com/floating-ui/floating-ui/blob/v1.16.1/packages/popper/src/modifiers/preventOverflow.js\n },\n flip: {\n enabled: flip,\n },\n }),\n [flip, preventOverflow]\n );\n\n const resolvedContainer = container ?? getDefaultPopperContainer(anchorEl);\n\n return (\n <>\n {backdrop && (\n <Popper open={open} className={styles.root} container={resolvedContainer}>\n <div className={styles.backdrop} onClick={backdropClickCloseHandler} />\n </Popper>\n )}\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement={placement}\n className={classNames(styles.root, popperClassName)}\n transition\n popperRef={popperRef}\n modifiers={modifiers}\n container={resolvedContainer}\n >\n {({ TransitionProps }) => (\n <Grow\n {...TransitionProps}\n timeout={animate ? 'auto' : 0}\n disableStrictModeCompat\n onEntered={(...args) => {\n TransitionProps?.onEntered?.(...args);\n observerRef.current.observe(args[0]);\n }}\n onExit={(...args) => {\n TransitionProps?.onExit?.(...args);\n observerRef.current.disconnect();\n }}\n >\n <Paper\n className={classNames(styles.paper, className)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n ref={ref}\n type={type}\n >\n {children}\n </Paper>\n </Grow>\n )}\n </Popper>\n </>\n );\n }\n);\n"],"names":["Popover","forwardRef","_ref","ref","children","open","onClose","className","_ref$closeOnBackdropC","closeOnBackdropClick","_ref$closeOnEscape","closeOnEscape","_ref$backdrop","backdrop","anchorEl","_ref$preventScroll","preventScroll","_ref$placement","placement","onMouseLeave","onMouseEnter","_ref$flip","flip","_ref$preventOverflow","preventOverflow","container","_ref$animate","animate","_ref$type","type","popperClassName","popperRef","useRef","observerRef","ResizeObserver","_popperRef$current","current","scheduleUpdate","backdropClickCloseHandler","useCallback","useEffect","handler","event","key","document","querySelector","DRAGGING_ATTRIBUTE","addEventListener","removeEventListener","disableScroll","body","modifiers","useMemo","enabled","padding","boundariesElement","resolvedContainer","getDefaultPopperContainer","_jsxs","_Fragment","_jsx","jsx","Popper","styles","root","onClick","classNames","transition","_ref2","TransitionProps","Grow","_objectSpread","timeout","disableStrictModeCompat","onEntered","_TransitionProps$onEn","_len","arguments","length","args","Array","_key","observe","onExit","_TransitionProps$onEx","_len2","_key2","disconnect","Paper","paper"],"mappings":"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"}
|