ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
182 lines • 6.11 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _extends from "@babel/runtime/helpers/esm/extends";
import { createVNode as _createVNode } from "vue";
import { cloneElement } from '../../_util/vnode';
import { defineComponent, inject, withDirectives } from 'vue';
import PropTypes from '../../_util/vue-types';
import antInput from '../../_util/antInputDirective';
import classNames from '../../_util/classNames';
export var inputProps = {
inputRef: PropTypes.any,
prefixCls: String,
id: String,
inputElement: PropTypes.VueNode,
disabled: {
type: Boolean,
default: undefined
},
autofocus: {
type: Boolean,
default: undefined
},
autocomplete: String,
editable: {
type: Boolean,
default: undefined
},
activeDescendantId: String,
value: String,
open: {
type: Boolean,
default: undefined
},
tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
/** Pass accessibility props to input */
attrs: PropTypes.object,
onKeydown: {
type: Function
},
onMousedown: {
type: Function
},
onChange: {
type: Function
},
onPaste: {
type: Function
},
onCompositionstart: {
type: Function
},
onCompositionend: {
type: Function
},
onFocus: {
type: Function
},
onBlur: {
type: Function
}
};
var Input = defineComponent({
compatConfig: {
MODE: 3
},
name: 'Input',
inheritAttrs: false,
props: inputProps,
setup: function setup(props) {
var blurTimeout = null;
var VCSelectContainerEvent = inject('VCSelectContainerEvent');
return function () {
var _inputNode, _inputNode$props;
var prefixCls = props.prefixCls,
id = props.id,
inputElement = props.inputElement,
disabled = props.disabled,
tabindex = props.tabindex,
autofocus = props.autofocus,
autocomplete = props.autocomplete,
editable = props.editable,
activeDescendantId = props.activeDescendantId,
value = props.value,
_onKeydown = props.onKeydown,
_onMousedown = props.onMousedown,
onChange = props.onChange,
onPaste = props.onPaste,
_onCompositionstart = props.onCompositionstart,
_onCompositionend = props.onCompositionend,
_onFocus = props.onFocus,
_onBlur = props.onBlur,
open = props.open,
inputRef = props.inputRef,
attrs = props.attrs;
var inputNode = inputElement || withDirectives(_createVNode("input", null, null), [[antInput]]);
var inputProps = inputNode.props || {};
var onOriginKeyDown = inputProps.onKeydown,
onOriginInput = inputProps.onInput,
onOriginFocus = inputProps.onFocus,
onOriginBlur = inputProps.onBlur,
onOriginMouseDown = inputProps.onMousedown,
onOriginCompositionStart = inputProps.onCompositionstart,
onOriginCompositionEnd = inputProps.onCompositionend,
style = inputProps.style;
inputNode = cloneElement(inputNode, _extends(_objectSpread(_objectSpread(_objectSpread({
type: 'search'
}, inputProps), {}, {
id: id,
ref: inputRef,
disabled: disabled,
tabindex: tabindex,
autocomplete: autocomplete || 'off',
autofocus: autofocus,
class: classNames("".concat(prefixCls, "-selection-search-input"), (_inputNode = inputNode) === null || _inputNode === void 0 ? void 0 : (_inputNode$props = _inputNode.props) === null || _inputNode$props === void 0 ? void 0 : _inputNode$props.class),
role: 'combobox',
'aria-expanded': open,
'aria-haspopup': 'listbox',
'aria-owns': "".concat(id, "_list"),
'aria-autocomplete': 'list',
'aria-controls': "".concat(id, "_list"),
'aria-activedescendant': activeDescendantId
}, attrs), {}, {
value: editable ? value : '',
readonly: !editable,
unselectable: !editable ? 'on' : null,
style: _objectSpread(_objectSpread({}, style), {}, {
opacity: editable ? null : 0
}),
onKeydown: function onKeydown(event) {
_onKeydown(event);
if (onOriginKeyDown) {
onOriginKeyDown(event);
}
},
onMousedown: function onMousedown(event) {
_onMousedown(event);
if (onOriginMouseDown) {
onOriginMouseDown(event);
}
},
onInput: function onInput(event) {
onChange(event);
if (onOriginInput) {
onOriginInput(event);
}
},
onCompositionstart: function onCompositionstart(event) {
_onCompositionstart(event);
if (onOriginCompositionStart) {
onOriginCompositionStart(event);
}
},
onCompositionend: function onCompositionend(event) {
_onCompositionend(event);
if (onOriginCompositionEnd) {
onOriginCompositionEnd(event);
}
},
onPaste: onPaste,
onFocus: function onFocus() {
clearTimeout(blurTimeout);
onOriginFocus && onOriginFocus(arguments.length <= 0 ? undefined : arguments[0]);
_onFocus && _onFocus(arguments.length <= 0 ? undefined : arguments[0]);
VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.focus(arguments.length <= 0 ? undefined : arguments[0]);
},
onBlur: function onBlur() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
blurTimeout = setTimeout(function () {
onOriginBlur && onOriginBlur(args[0]);
_onBlur && _onBlur(args[0]);
VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.blur(args[0]);
}, 100);
}
}), inputNode.type === 'textarea' ? {} : {
type: 'search'
}), true, true);
return inputNode;
};
}
});
export default Input;