@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
78 lines • 3.64 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["ref"];
import { PromptField } from "./PromptField.js";
import { PromptFieldControl } from "./PromptFieldControl.js";
import { PromptFieldRecord } from "./PromptFieldRecord.js";
import { PromptFieldSend } from "./PromptFieldSend.js";
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
import { IS_SPEECH_RECOGNITION_SUPPORTED } from "../../utils/speechRecognition.js";
import { jsx as _jsx } from "react/jsx-runtime";
function GridPromptField(props) {
const rootProps = useGridRootProps();
const apiRef = useGridApiContext();
let placeholder = apiRef.current.getLocaleText('promptFieldPlaceholder');
if (IS_SPEECH_RECOGNITION_SUPPORTED) {
placeholder = apiRef.current.getLocaleText('promptFieldPlaceholderWithRecording');
}
return /*#__PURE__*/_jsx(PromptField, _extends({}, props, {
children: /*#__PURE__*/_jsx(PromptFieldControl, {
onKeyDown: event => {
if (event.key === 'Enter') {
// Prevents the `multiline` TextField from adding a new line
event.preventDefault();
}
},
render: (_ref, state) => {
let {
ref
} = _ref,
controlProps = _objectWithoutPropertiesLoose(_ref, _excluded);
return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, controlProps, {
fullWidth: true,
inputRef: ref,
"aria-label": apiRef.current.getLocaleText('promptFieldLabel'),
placeholder: state.recording ? apiRef.current.getLocaleText('promptFieldPlaceholderListening') : placeholder,
size: "small",
multiline: true,
autoFocus: true,
slotProps: _extends({
input: _extends({
startAdornment: IS_SPEECH_RECOGNITION_SUPPORTED ? /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
title: state.recording ? apiRef.current.getLocaleText('promptFieldStopRecording') : apiRef.current.getLocaleText('promptFieldRecord'),
children: /*#__PURE__*/_jsx(PromptFieldRecord, {
size: "small",
edge: "start",
color: state.recording ? 'primary' : 'default',
children: /*#__PURE__*/_jsx(rootProps.slots.promptSpeechRecognitionIcon, {
fontSize: "small"
})
})
}) : /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
title: apiRef.current.getLocaleText('promptFieldSpeechRecognitionNotSupported'),
children: /*#__PURE__*/_jsx(rootProps.slots.promptSpeechRecognitionOffIcon, {
fontSize: "small"
})
}),
endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
title: apiRef.current.getLocaleText('promptFieldSend'),
children: /*#__PURE__*/_jsx("span", {
children: /*#__PURE__*/_jsx(PromptFieldSend, {
size: "small",
edge: "end",
color: "primary",
children: /*#__PURE__*/_jsx(rootProps.slots.promptSendIcon, {
fontSize: "small"
})
})
})
})
}, controlProps.slotProps?.input)
}, controlProps.slotProps)
}));
}
})
}));
}
export { GridPromptField };