zent
Version:
一套前端设计语言和基于React的实现
21 lines (20 loc) • 2.9 kB
JavaScript
import { __assign, __rest } from "tslib";
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { forwardRef } from 'react';
import Icon from '../icon';
import { createUseIMEComposition } from '../ime-composition';
import cx from 'classnames';
function preventDefault(e) {
e.preventDefault();
}
var useIMEComposition = createUseIMEComposition();
export var InputCore = forwardRef(function (props, ref) {
var addonBefore = props.addonBefore, addonAfter = props.addonAfter, showClear = props.showClear, valueProp = props.value, onChangeProp = props.onChange, onCompositionStartProp = props.onCompositionStart, onCompositionEndProp = props.onCompositionEnd, onClear = props.onClear, width = props.width, size = props.size, onPressEnter = props.onPressEnter, autoFocus = props.autoFocus, autoSelect = props.autoSelect, initSelectionStart = props.initSelectionStart, initSelectionEnd = props.initSelectionEnd, icon = props.icon, _a = props.iconPosition, iconPosition = _a === void 0 ? 'end' : _a, inline = props.inline, onIconClick = props.onIconClick, otherProps = __rest(props, ["addonBefore", "addonAfter", "showClear", "value", "onChange", "onCompositionStart", "onCompositionEnd", "onClear", "width", "size", "onPressEnter", "autoFocus", "autoSelect", "initSelectionStart", "initSelectionEnd", "icon", "iconPosition", "inline", "onIconClick"]);
var _b = useIMEComposition(valueProp, onChangeProp, onCompositionStartProp, onCompositionEndProp), value = _b.value, onChange = _b.onChange, onCompositionStart = _b.onCompositionStart, onCompositionEnd = _b.onCompositionEnd;
var showClearIcon = showClear && valueProp && !otherProps.disabled && !otherProps.readOnly;
var iconClass = cx('zent-input-icon', {
'zent-input-icon-click': !!onIconClick,
});
return (_jsxs(_Fragment, { children: [addonBefore && (_jsx("div", __assign({ className: "zent-input-addon-before", "data-zv": '10.0.17' }, { children: addonBefore }), void 0)), icon && iconPosition === 'front' ? (_jsx(Icon, { className: iconClass, type: icon, onMouseUp: preventDefault, onMouseDown: preventDefault, onClick: onIconClick }, void 0)) : null, _jsx("input", __assign({}, otherProps, { ref: ref, className: "zent-input", value: value, onChange: onChange, onCompositionStart: onCompositionStart, onCompositionEnd: onCompositionEnd, "data-zv": '10.0.17' }), void 0), showClearIcon && (_jsx(Icon, { className: "zent-input-icon", type: "close-circle", onClick: onClear, onMouseDown: preventDefault }, void 0)), icon && iconPosition === 'end' ? (_jsx(Icon, { className: iconClass, type: icon, onMouseUp: preventDefault, onMouseDown: preventDefault, onClick: onIconClick }, void 0)) : null, addonAfter && _jsx("div", __assign({ className: "zent-input-addon-after", "data-zv": '10.0.17' }, { children: addonAfter }), void 0)] }, void 0));
});
InputCore.displayName = 'Input';