UNPKG

grommet

Version:

focus on the essential experience

67 lines 2.81 kB
var _excluded = ["a11yTitle", "fill", "focusIndicator", "name", "onBlur", "onChange", "onFocus", "onKeyDown", "value"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } import React, { forwardRef, useContext, useState } from 'react'; import { FormContext } from '../Form/FormContext'; import { Keyboard } from '../Keyboard'; import { StyledTextArea } from './StyledTextArea'; import { TextAreaPropTypes } from './propTypes'; import { useThemeValue } from '../../utils/useThemeValue'; var TextArea = /*#__PURE__*/forwardRef(function (_ref, ref) { var a11yTitle = _ref.a11yTitle, fill = _ref.fill, _ref$focusIndicator = _ref.focusIndicator, focusIndicator = _ref$focusIndicator === void 0 ? true : _ref$focusIndicator, name = _ref.name, _onBlur = _ref.onBlur, _onChange = _ref.onChange, _onFocus = _ref.onFocus, onKeyDown = _ref.onKeyDown, valueProp = _ref.value, rest = _objectWithoutPropertiesLoose(_ref, _excluded); var _useThemeValue = useThemeValue(), passThemeFlag = _useThemeValue.passThemeFlag; var formContext = useContext(FormContext); var _formContext$useFormI = formContext.useFormInput({ name: name, value: valueProp }), value = _formContext$useFormI[0], setValue = _formContext$useFormI[1]; var _useState = useState(), focus = _useState[0], setFocus = _useState[1]; return /*#__PURE__*/React.createElement(Keyboard, { onEsc: function onEsc(event) { // we have to stop both synthetic events and native events // drop and layer should not close by pressing esc on this input event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); }, onKeyDown: onKeyDown }, /*#__PURE__*/React.createElement(StyledTextArea, _extends({ "aria-label": a11yTitle, ref: ref, name: name, fillArg: fill, focus: focus, value: value, focusIndicator: focusIndicator }, passThemeFlag, rest, { onFocus: function onFocus(event) { setFocus(true); if (_onFocus) _onFocus(event); }, onBlur: function onBlur(event) { setFocus(false); if (_onBlur) _onBlur(event); }, onChange: function onChange(event) { setValue(event.target.value); if (_onChange) _onChange(event); } }))); }); TextArea.displayName = 'TextArea'; TextArea.propTypes = TextAreaPropTypes; export { TextArea };