yzsd
Version:
a niubi UI component
149 lines • 6.16 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
import _typeof from "@babel/runtime/helpers/esm/typeof";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import classNames from "classnames";
import RcInput from 'rc-input';
import { composeRef } from "rc-util/es/ref";
import React, { forwardRef, useEffect, useRef } from 'react';
import useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';
import { hasPrefixSuffix, getStatusClassNames } from './utils';
export function fixControlledValue(value) {
if (typeof value === 'undefined' || value === null) {
return '';
}
return String(value);
}
export function resolveOnChange(target, e, onChange, targerValue) {
if (!onChange) {
return;
}
var event = e;
if (e.type === 'click') {
var currentTarget = target.cloneNode(true);
event = Object.create(e, {
target: {
value: currentTarget
},
currentTarget: {
value: currentTarget
}
});
currentTarget.value = '';
onChange(event);
return;
}
if (targerValue !== undefined) {
event = Object.create(e, {
target: {
value: target
},
currentTarget: {
value: target
}
});
target.value = targerValue;
onChange(event);
return;
}
onChange(event);
}
export function triggerFocus(element, option) {
if (!element) {
return;
}
element.focus(option);
var _ref = option || {},
cursor = _ref.cursor;
if (cursor) {
var len = element.value.length;
switch (cursor) {
case 'start':
element.setSelectionRange(0, 0);
break;
case 'end':
element.setSelectionRange(len, len);
break;
default:
element.setSelectionRange(0, len);
break;
}
}
}
var Input = /*#__PURE__*/forwardRef(function (props, ref) {
var _classNames, _classNames2, _classNames3;
var _props$prefixCls = props.prefixCls,
customizePrefixCls = _props$prefixCls === void 0 ? 'yzs-input' : _props$prefixCls,
_props$bordered = props.bordered,
bordered = _props$bordered === void 0 ? true : _props$bordered,
customStatus = props.status,
customSize = props.size,
customDisabled = props.disabled,
onBlur = props.onBlur,
onFocus = props.onFocus,
suffix = props.suffix,
allowClear = props.allowClear,
addonAfter = props.addonAfter,
addonBefore = props.addonBefore,
className = props.className,
onChange = props.onChange,
rest = __rest(props, ["prefixCls", "bordered", "status", "size", "disabled", "onBlur", "onFocus", "suffix", "allowClear", "addonAfter", "addonBefore", "className", "onChange"]);
var inputRef = useRef(null);
var mergedSize = customSize;
var mergedDisabled = customDisabled;
var mergedStatus = customStatus;
var inputHasPrefixSuffix = hasPrefixSuffix(props);
var prevHasPrefixSuffix = useRef(inputHasPrefixSuffix);
useEffect(function () {
if (inputHasPrefixSuffix && !prevHasPrefixSuffix.current) {
prevHasPrefixSuffix.current = inputHasPrefixSuffix;
}
}, [inputHasPrefixSuffix]);
var removePasswordTimeout = useRemovePasswordTimeout(inputRef, true);
var handleBlur = function handleBlur(e) {
removePasswordTimeout();
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
};
var handleFocus = function handleFocus(e) {
removePasswordTimeout();
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
};
var handleChange = function handleChange(e) {
removePasswordTimeout();
onChange === null || onChange === void 0 ? void 0 : onChange(e);
};
var suffixNode = suffix && /*#__PURE__*/React.createElement(React.Fragment, null, suffix);
var mergedAllowClear;
if (_typeof(allowClear) === 'object' && (allowClear === null || allowClear === void 0 ? void 0 : allowClear.clearIcon)) {
mergedAllowClear = allowClear;
} else if (allowClear) {
mergedAllowClear = {
clearIcon: 'x'
};
}
return /*#__PURE__*/React.createElement(RcInput, _extends({
ref: composeRef(ref, inputRef),
prefixCls: customizePrefixCls
}, rest, {
disabled: mergedDisabled,
onBlur: handleBlur,
onFocus: handleFocus,
suffix: suffixNode,
allowClear: mergedAllowClear,
className: classNames(className),
onChange: handleChange,
addonAfter: addonAfter && /*#__PURE__*/React.createElement(React.Fragment, null, addonAfter),
addonBefore: addonBefore && /*#__PURE__*/React.createElement(React.Fragment, null, addonBefore),
inputClassName: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(customizePrefixCls, "-sm"), mergedSize === 'small'), _defineProperty(_classNames, "".concat(customizePrefixCls, "-lg"), mergedSize === 'large'), _defineProperty(_classNames, "".concat(customizePrefixCls, "-borderless"), !bordered), _classNames), !inputHasPrefixSuffix && getStatusClassNames(customizePrefixCls, mergedStatus)),
affixWrapperClassName: classNames((_classNames2 = {}, _defineProperty(_classNames2, "".concat(customizePrefixCls, "-affix-wrapper-sm"), mergedSize === 'small'), _defineProperty(_classNames2, "".concat(customizePrefixCls, "-affix-wrapper-lg"), mergedSize === 'large'), _defineProperty(_classNames2, "".concat(customizePrefixCls, "-affix-wrapper-borderless"), !bordered), _classNames2)),
groupClassName: classNames((_classNames3 = {}, _defineProperty(_classNames3, "".concat(customizePrefixCls, "-group-wrapper-sm"), mergedSize === 'small'), _defineProperty(_classNames3, "".concat(customizePrefixCls, "-group-wrapper-lg"), mergedSize === 'large'), _classNames3), getStatusClassNames("".concat(customizePrefixCls, "-group-wrapper"), mergedStatus))
}));
});
export default Input;