ether-admin/node_modules/ant-design-vue/lib/vc-select/Selector/SingleSelector.js

176 lines
6.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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"));
var _LegacyContext = _interopRequireDefault(require("../../vc-tree-select/LegacyContext"));
const props = {
inputElement: _vueTypes.default.any,
id: String,
prefixCls: String,
values: _vueTypes.default.array,
open: {
type: Boolean,
default: undefined
},
searchValue: String,
inputRef: _vueTypes.default.any,
placeholder: _vueTypes.default.any,
compositionStatus: {
type: Boolean,
default: undefined
},
disabled: {
type: Boolean,
default: undefined
},
mode: String,
showSearch: {
type: Boolean,
default: undefined
},
autofocus: {
type: Boolean,
default: undefined
},
autocomplete: String,
activeDescendantId: String,
tabindex: _vueTypes.default.oneOfType([_vueTypes.default.number, _vueTypes.default.string]),
activeValue: String,
backfill: {
type: Boolean,
default: undefined
},
optionLabelRender: Function,
onInputChange: Function,
onInputPaste: Function,
onInputKeyDown: Function,
onInputMouseDown: Function,
onInputCompositionStart: Function,
onInputCompositionEnd: Function
};
const SingleSelector = (0, _vue.defineComponent)({
name: 'SingleSelector',
setup(props) {
const inputChanged = (0, _vue.shallowRef)(false);
const combobox = (0, _vue.computed)(() => props.mode === 'combobox');
const inputEditable = (0, _vue.computed)(() => combobox.value || props.showSearch);
const inputValue = (0, _vue.computed)(() => {
let inputValue = props.searchValue || '';
if (combobox.value && props.activeValue && !inputChanged.value) {
inputValue = props.activeValue;
}
return inputValue;
});
const legacyTreeSelectContext = (0, _LegacyContext.default)();
(0, _vue.watch)([combobox, () => props.activeValue], () => {
if (combobox.value) {
inputChanged.value = false;
}
}, {
immediate: true
});
// Not show text when closed expect combobox mode
const hasTextInput = (0, _vue.computed)(() => props.mode !== 'combobox' && !props.open && !props.showSearch ? false : !!inputValue.value || props.compositionStatus);
const title = (0, _vue.computed)(() => {
const item = props.values[0];
return item && (typeof item.label === 'string' || typeof item.label === 'number') ? item.label.toString() : undefined;
});
const renderPlaceholder = () => {
if (props.values[0]) {
return null;
}
const hiddenStyle = hasTextInput.value ? {
visibility: 'hidden'
} : undefined;
return (0, _vue.createVNode)("span", {
"class": `${props.prefixCls}-selection-placeholder`,
"style": hiddenStyle
}, [props.placeholder]);
};
const handleInput = e => {
const composing = e.target.composing;
if (!composing) {
inputChanged.value = true;
props.onInputChange(e);
}
};
return () => {
var _a, _b, _c, _d;
const {
inputElement,
prefixCls,
id,
values,
inputRef,
disabled,
autofocus,
autocomplete,
activeDescendantId,
open,
tabindex,
optionLabelRender,
onInputKeyDown,
onInputMouseDown,
onInputPaste,
onInputCompositionStart,
onInputCompositionEnd
} = props;
const item = values[0];
let titleNode = null;
// custom tree-select title by slot
// For TreeSelect
if (item && legacyTreeSelectContext.customSlots) {
const key = (_a = item.key) !== null && _a !== void 0 ? _a : item.value;
const originData = ((_b = legacyTreeSelectContext.keyEntities[key]) === null || _b === void 0 ? void 0 : _b.node) || {};
titleNode = legacyTreeSelectContext.customSlots[(_c = originData.slots) === null || _c === void 0 ? void 0 : _c.title] || legacyTreeSelectContext.customSlots.title || item.label;
if (typeof titleNode === 'function') {
titleNode = titleNode(originData);
}
// else if (treeSelectContext.value.slots.titleRender) {
// // 因历史 title 是覆盖逻辑,新增 titleRender所有的 title 都走一遍 titleRender
// titleNode = treeSelectContext.value.slots.titleRender(item.option?.data || {});
// }
} else {
titleNode = optionLabelRender && item ? optionLabelRender(item.option) : item === null || item === void 0 ? void 0 : item.label;
}
return (0, _vue.createVNode)(_vue.Fragment, null, [(0, _vue.createVNode)("span", {
"class": `${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,
"activeDescendantId": activeDescendantId,
"value": inputValue.value,
"onKeydown": onInputKeyDown,
"onMousedown": onInputMouseDown,
"onChange": handleInput,
"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": `${prefixCls}-selection-item`,
"title": title.value
}, [(0, _vue.createVNode)(_vue.Fragment, {
"key": (_d = item.key) !== null && _d !== void 0 ? _d : item.value
}, [titleNode])]), renderPlaceholder()]);
};
}
});
SingleSelector.props = props;
SingleSelector.inheritAttrs = false;
var _default = exports.default = SingleSelector;