UNPKG

@mui/x-date-pickers-pro

Version:

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

118 lines 4.6 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["props", "steps"], _excluded2 = ["ownerState"]; import * as React from 'react'; import useSlotProps from '@mui/utils/useSlotProps'; import useEventCallback from '@mui/utils/useEventCallback'; import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { useLicenseVerifier } from '@mui/x-license'; import { PickersLayout } from '@mui/x-date-pickers/PickersLayout'; import { usePicker, PickersModalDialog, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals'; import { usePickerTranslations } from '@mui/x-date-pickers/hooks'; import { useRangePosition } from "../useRangePosition.js"; import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js"; import { getRangeFieldType } from "../../utils/date-fields-utils.js"; import { createRangePickerStepNavigation } from "../../utils/createRangePickerStepNavigation.js"; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; export const useMobileRangePicker = _ref => { let { props, steps } = _ref, pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded); useLicenseVerifier('x-date-pickers-pro', "MTc1NDYwNDAwMDAwMA=="); const { slots, slotProps: innerSlotProps, label, inputRef, localeText } = props; const fieldType = getRangeFieldType(slots.field); const rangePositionResponse = useRangePosition(props); const contextTranslations = usePickerTranslations(); const getStepNavigation = createRangePickerStepNavigation({ steps, rangePositionResponse }); const { providerProps, renderCurrentView, ownerState } = usePicker(_extends({}, pickerParams, { props, variant: 'mobile', autoFocusView: true, viewContainerRole: 'dialog', localeText, getStepNavigation, onPopperExited: useEventCallback(() => rangePositionResponse.setRangePosition(props.defaultRangePosition ?? 'start')) })); const labelId = providerProps.privateContextValue.labelId; const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false; const Field = slots.field; const _useSlotProps = useSlotProps({ elementType: Field, externalSlotProps: innerSlotProps?.field, additionalProps: _extends({}, fieldType === 'single-input' && isToolbarHidden && { id: labelId }), ownerState }), fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2); const Layout = slots?.layout ?? PickersLayout; const finalLocaleText = _extends({}, contextTranslations, localeText); let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId; if (isToolbarHidden) { const labels = []; if (fieldType === 'multi-input') { if (finalLocaleText.start) { labels.push(`${labelId}-start-label`); } if (finalLocaleText.end) { labels.push(`${labelId}-end-label`); } } else if (label != null) { labels.push(`${labelId}-label`); } labelledById = labels.length > 0 ? labels.join(' ') : undefined; } const slotProps = _extends({}, innerSlotProps, { toolbar: _extends({}, innerSlotProps?.toolbar, { titleId: labelId }), mobilePaper: _extends({ 'aria-labelledby': labelledById }, innerSlotProps?.mobilePaper) }, fieldType === 'multi-input' && { textField: slotOwnerState => { return _extends({}, resolveComponentProps(innerSlotProps?.textField, slotOwnerState), { id: `${labelId}-${slotOwnerState.position}` }); } }); const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, { children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, { slots: slots, slotProps: slotProps, inputRef: inputRef, children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, { value: rangePositionResponse, children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, { slots: slots, slotProps: slotProps, children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, { slots: slots, slotProps: slotProps, children: renderCurrentView() })) })] }) }) })); if (process.env.NODE_ENV !== "production") renderPicker.displayName = "renderPicker"; return { renderPicker }; };