UNPKG

ant-design-vue

Version:

An enterprise-class UI design language and Vue-based implementation

146 lines (135 loc) 5.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _pickAttrs = _interopRequireDefault(require("../../_util/pickAttrs")); var _Input = _interopRequireDefault(require("./Input")); var _vueTypes = _interopRequireDefault(require("../../_util/vue-types")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _isSlot(s) { return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s); } var props = { inputElement: _vueTypes.default.any, id: _vueTypes.default.string, prefixCls: _vueTypes.default.string, values: _vueTypes.default.array, open: _vueTypes.default.looseBool, searchValue: _vueTypes.default.string, inputRef: _vueTypes.default.any, placeholder: _vueTypes.default.any, disabled: _vueTypes.default.looseBool, mode: _vueTypes.default.string, showSearch: _vueTypes.default.looseBool, autofocus: _vueTypes.default.looseBool, autocomplete: _vueTypes.default.string, accessibilityIndex: _vueTypes.default.number, tabindex: _vueTypes.default.number, activeValue: _vueTypes.default.string, backfill: _vueTypes.default.looseBool, onInputChange: _vueTypes.default.func, onInputPaste: _vueTypes.default.func, onInputKeyDown: _vueTypes.default.func, onInputMouseDown: _vueTypes.default.func, onInputCompositionStart: _vueTypes.default.func, onInputCompositionEnd: _vueTypes.default.func }; var SingleSelector = (0, _vue.defineComponent)({ name: 'SingleSelector', setup: function setup(props) { var inputChanged = (0, _vue.ref)(false); var combobox = (0, _vue.computed)(function () { return props.mode === 'combobox'; }); var inputEditable = (0, _vue.computed)(function () { return combobox.value || props.showSearch; }); var inputValue = (0, _vue.computed)(function () { var inputValue = props.searchValue || ''; if (combobox.value && props.activeValue && !inputChanged.value) { inputValue = props.activeValue; } return inputValue; }); (0, _vue.watch)((0, _vue.computed)(function () { return [combobox.value, props.activeValue]; }), function () { if (combobox.value) { inputChanged.value = false; } }, { immediate: true }); // Not show text when closed expect combobox mode var hasTextInput = (0, _vue.computed)(function () { return props.mode !== 'combobox' && !props.open ? false : !!inputValue.value; }); var title = (0, _vue.computed)(function () { var item = props.values[0]; return item && (typeof item.label === 'string' || typeof item.label === 'number') ? item.label.toString() : undefined; }); return function () { var inputElement = props.inputElement, prefixCls = props.prefixCls, id = props.id, values = props.values, inputRef = props.inputRef, disabled = props.disabled, autofocus = props.autofocus, autocomplete = props.autocomplete, accessibilityIndex = props.accessibilityIndex, open = props.open, placeholder = props.placeholder, tabindex = props.tabindex, onInputKeyDown = props.onInputKeyDown, onInputMouseDown = props.onInputMouseDown, onInputChange = props.onInputChange, onInputPaste = props.onInputPaste, onInputCompositionStart = props.onInputCompositionStart, onInputCompositionEnd = props.onInputCompositionEnd; var item = values[0]; return (0, _vue.createVNode)(_vue.Fragment, null, [(0, _vue.createVNode)("span", { "class": "".concat(prefixCls, "-selection-search") }, [(0, _vue.createVNode)(_Input.default, { "inputRef": inputRef, "prefixCls": prefixCls, "id": id, "open": open, "inputElement": inputElement, "disabled": disabled, "autofocus": autofocus, "autocomplete": autocomplete, "editable": inputEditable.value, "accessibilityIndex": accessibilityIndex, "value": inputValue.value, "onKeydown": onInputKeyDown, "onMousedown": onInputMouseDown, "onChange": function onChange(e) { inputChanged.value = true; onInputChange(e); }, "onPaste": onInputPaste, "onCompositionstart": onInputCompositionStart, "onCompositionend": onInputCompositionEnd, "tabindex": tabindex, "attrs": (0, _pickAttrs.default)(props, true) }, null)]), !combobox.value && item && !hasTextInput.value && (0, _vue.createVNode)("span", { "class": "".concat(prefixCls, "-selection-item"), "title": title.value }, [(0, _vue.createVNode)(_vue.Fragment, { "key": item.key || item.value }, [item.label])]), !item && !hasTextInput.value && (0, _vue.createVNode)("span", { "class": "".concat(prefixCls, "-selection-placeholder") }, _isSlot(placeholder) ? placeholder : { default: function _default() { return [placeholder]; } })]); }; } }); SingleSelector.props = props; SingleSelector.inheritAttrs = false; var _default2 = SingleSelector; exports.default = _default2;