@material-ui/lab
Version:
Material-UI Lab - Incubator for Material-UI React components.
56 lines (51 loc) • 1.72 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { WrapperVariantContext } from './WrapperVariantContext';
import { KeyboardDateInput } from '../KeyboardDateInput';
import { executeInTheNextEventLoopTick } from '../utils';
import PickersPopper from '../PickersPopper';
import { CanAutoFocusContext, useAutoFocusControl } from '../hooks/useCanAutoFocus';
const DesktopTooltipWrapper = props => {
const {
open,
children,
PopperProps,
onDismiss,
DateInputProps,
TransitionComponent,
KeyboardDateInputComponent = KeyboardDateInput
} = props;
const inputRef = React.useRef(null);
const popperRef = React.useRef(null);
const {
canAutoFocus,
onOpen
} = useAutoFocusControl(open);
const handleBlur = () => {
executeInTheNextEventLoopTick(() => {
if (inputRef.current?.contains(document.activeElement) || popperRef.current?.contains(document.activeElement)) {
return;
}
onDismiss();
});
};
return /*#__PURE__*/React.createElement(WrapperVariantContext.Provider, {
value: "desktop"
}, /*#__PURE__*/React.createElement(CanAutoFocusContext.Provider, {
value: canAutoFocus
}, /*#__PURE__*/React.createElement(KeyboardDateInputComponent, _extends({}, DateInputProps, {
containerRef: inputRef,
onBlur: handleBlur
})), /*#__PURE__*/React.createElement(PickersPopper, {
role: "tooltip",
open: open,
containerRef: popperRef,
anchorEl: inputRef.current,
TransitionComponent: TransitionComponent,
PopperProps: PopperProps,
onBlur: handleBlur,
onClose: onDismiss,
onOpen: onOpen
}, children)));
};
export default DesktopTooltipWrapper;