@ray-js/components
Version:
Ray basic components
56 lines • 1.7 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
const _excluded = ["className", "onInput", "onFocus", "onBlur"];
import * as React from 'react';
import clsx from 'clsx';
import { useEventListener } from 'ahooks';
import styles from './index.module.less';
import handleProps from '../utils/handleProps';
const Textarea = props => {
const {
className,
onInput,
onFocus,
onBlur
} = props,
restProps = _objectWithoutProperties(props, _excluded);
const currentNode = React.useRef(null);
useEventListener('input', e => {
onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, e), {}, {
type: 'input',
value: e.detail.value,
origin: e
}));
}, {
target: currentNode
});
useEventListener('focus', e => {
onFocus === null || onFocus === void 0 || onFocus(_objectSpread(_objectSpread({}, e), {}, {
type: 'focus',
value: e.detail.value,
origin: e
}));
}, {
target: currentNode
});
useEventListener('blur', e => {
onBlur === null || onBlur === void 0 || onBlur(_objectSpread(_objectSpread({}, e), {}, {
type: 'blur',
value: e.detail.value,
origin: e
}));
}, {
target: currentNode
});
return (
/*#__PURE__*/
// @ts-ignore
React.createElement("v-textarea", _extends({}, handleProps(restProps), {
ref: currentNode,
class: clsx('ray-textarea', styles.textarea, className)
}))
);
};
Textarea.displayName = 'Textarea';
export default Textarea;