UNPKG

@mui/x-date-pickers-pro

Version:

The Pro plan edition of the MUI X Date and Time Picker components.

56 lines 1.99 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["viewRenderer", "value", "onChange", "defaultValue", "onViewChange", "views", "className", "referenceDate"]; import { usePickerAdapter } from '@mui/x-date-pickers/hooks'; import { isRangeValid } from "../internals/utils/date-utils.js"; import { calculateRangeChange, resolveReferenceDate } from "../internals/utils/date-range-manager.js"; import { usePickerRangePositionContext } from "../hooks/index.js"; /** * @ignore - internal component. */ function TimeRangePickerTimeWrapper(props) { const adapter = usePickerAdapter(); const { viewRenderer, value, onChange, defaultValue, onViewChange, views, referenceDate: referenceDateProp } = props, other = _objectWithoutPropertiesLoose(props, _excluded); const { rangePosition } = usePickerRangePositionContext(); if (!viewRenderer) { return null; } const currentValue = (rangePosition === 'start' ? value?.[0] : value?.[1]) ?? null; const currentDefaultValue = (rangePosition === 'start' ? defaultValue?.[0] : defaultValue?.[1]) ?? null; const referenceDate = resolveReferenceDate(referenceDateProp, rangePosition); const handleOnChange = (newDate, selectionState, selectedView) => { if (!onChange || !value) { return; } const { newRange } = calculateRangeChange({ newDate, adapter, range: value, rangePosition }); const isFullRangeSelected = rangePosition === 'end' && isRangeValid(adapter, newRange); onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView); }; return viewRenderer(_extends({}, other, { referenceDate, views, onViewChange, value: currentValue, onChange: handleOnChange, defaultValue: currentDefaultValue })); } export { TimeRangePickerTimeWrapper };