UNPKG

@ray-js/components

Version:

Ray basic components

79 lines 2.48 kB
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 = ["placeholderStyle", "className", "maxLength", "onBlur", "onFocus", "onConfirm"]; import * as React from 'react'; import clsx from 'clsx'; import { useEventListener } from 'ahooks'; import { inlineStyle, useStylesheet } from '@ray-js/framework-shared'; import { defaultInputProps } from './props'; import styles from './index.module.less'; import handleProps from '../utils/handleProps'; const Input = /*#__PURE__*/React.forwardRef((props, ref) => { const { placeholderStyle, className, maxLength, onBlur, onFocus, onConfirm } = props, restProps = _objectWithoutProperties(props, _excluded); const [placeholderStyleClassName] = useStylesheet(inlineStyle(placeholderStyle)); const currentNode = ref || React.useRef(null); 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 => { const { value } = e.target; onBlur === null || onBlur === void 0 || onBlur(_objectSpread(_objectSpread({}, e), {}, { type: 'blur', value, origin: e })); }, { target: currentNode }); useEventListener('confirm', e => { const { value } = e.target; onConfirm === null || onConfirm === void 0 || onConfirm(_objectSpread(_objectSpread({}, e), {}, { type: 'confirm', value, origin: e })); }, { target: currentNode }); return ( /*#__PURE__*/ // @ts-ignore React.createElement("v-input", _extends({}, handleProps(restProps), { maxlength: maxLength, onInput: function (e) { var _props$onInput; const { value } = e.target; (_props$onInput = props.onInput) === null || _props$onInput === void 0 || _props$onInput.call(props, _objectSpread(_objectSpread({}, e), {}, { type: 'input', value, origin: e })); }, class: clsx('ray-input', styles.input, className, placeholderStyleClassName), ref: currentNode })) ); }); Input.defaultProps = defaultInputProps; export default Input;