@material-ui/lab
Version:
Material-UI Lab - Incubator for Material-UI React components.
56 lines (55 loc) • 2.03 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import PropTypes from 'prop-types';
import { onSpaceOrEnter } from './utils';
import { useUtils } from './hooks/useUtils';
import { getDisplayDate, getTextFieldAriaText } from './text-field-helper'; // make `variant` optional
export var PureDateInput = function PureDateInput(_ref) {
var containerRef = _ref.containerRef,
disabled = _ref.disabled,
forwardedRef = _ref.forwardedRef,
_ref$getOpenDialogAri = _ref.getOpenDialogAriaText,
getOpenDialogAriaText = _ref$getOpenDialogAri === void 0 ? getTextFieldAriaText : _ref$getOpenDialogAri,
inputFormat = _ref.inputFormat,
InputProps = _ref.InputProps,
label = _ref.label,
onOpen = _ref.openPicker,
rawValue = _ref.rawValue,
renderInput = _ref.renderInput,
_ref$TextFieldProps = _ref.TextFieldProps,
TextFieldProps = _ref$TextFieldProps === void 0 ? {} : _ref$TextFieldProps,
validationError = _ref.validationError;
var utils = useUtils();
var PureDateInputProps = React.useMemo(function () {
return _extends({}, InputProps, {
readOnly: true
});
}, [InputProps]);
var inputValue = getDisplayDate(utils, rawValue, inputFormat);
return renderInput(_extends({
label: label,
disabled: disabled,
ref: containerRef,
inputRef: forwardedRef,
error: validationError,
InputProps: PureDateInputProps,
inputProps: {
disabled: disabled,
readOnly: true,
'aria-readonly': true,
'aria-label': getOpenDialogAriaText(rawValue, utils),
value: inputValue,
onClick: onOpen,
onKeyDown: onSpaceOrEnter(onOpen)
}
}, TextFieldProps));
};
PureDateInput.propTypes = {
acceptRegex: PropTypes.instanceOf(RegExp),
getOpenDialogAriaText: PropTypes.func,
mask: PropTypes.string,
OpenPickerButtonProps: PropTypes.object,
openPickerIcon: PropTypes.node,
renderInput: PropTypes.func.isRequired,
rifmFormatter: PropTypes.func
};