@opentiny/vue-base-select
Version:
401 lines (400 loc) • 8.34 kB
JavaScript
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t2 = arguments[e];
for (var r in t2) ({}).hasOwnProperty.call(t2, r) && (n[r] = t2[r]);
}
return n;
}, _extends.apply(null, arguments);
}
import { defineComponent, $props, $setup, $prefix } from "@opentiny/vue-common";
import { t } from "@opentiny/vue-locale";
import PcTemplate from "./pc.js";
import MobileFirstTemplate from "./mobile-first.js";
import { IconChevronDown } from "@opentiny/vue-icon";
var template = function template2(mode) {
var _process$env;
var tinyMode = typeof process === "object" ? (_process$env = process.env) == null ? void 0 : _process$env.TINY_MODE : null;
if ("pc" === (tinyMode || mode)) {
return PcTemplate;
}
if ("mobile-first" === (tinyMode || mode)) {
return MobileFirstTemplate;
}
return PcTemplate;
};
var $constants = {
CLASS: {
SelectDropdownWrap: ".tiny-select-dropdown__wrap",
IsReverse: "is-reverse"
},
I18N: {
noData: "ui.select.noData",
noMatch: "ui.select.noMatch",
loading: "ui.select.loading"
},
COMPONENT_NAME: {
Form: "Form",
Select: "Select",
Option: "Option",
FormItem: "FormItem",
OptionGroup: "OptionGroup",
SelectDropdown: "SelectDropdown"
},
EVENT_NAME: {
removeTag: "remove-tag",
formChange: "form.change",
formBlur: "form.blur",
queryChange: "queryChange",
setSelected: "setSelected",
updatePopper: "updatePopper",
destroyPopper: "destroyPopper",
visibleChange: "visible-change",
handleOptionClick: "handleOptionClick",
handleGroupDisabled: "handleGroupDisabled",
initValue: "initValue"
},
TYPE: {
Grid: "grid",
Tree: "tree"
},
MAX_WIDTH: 132,
RECYCLE: {
SAAS_HEIGHT: 220,
AURORA_HEIGHT: 180,
ITEM_HEIGHT: 34,
SAFE_MARGIN: 4
},
SAAS_SIZE: {
mini: 24,
small: 28,
medium: 32
},
AURORA_SIZE: {
mini: 24,
small: 36,
medium: 42
},
SPACING_HEIGHT: 0,
MAX_VISIBLE_ROWS: 1
// 多选默认最大显示行数,超出后自动隐藏
};
var BaseSelect = defineComponent({
name: $prefix + "BaseSelect",
componentName: "BaseSelect",
inject: {
form: {
default: ""
},
formItem: {
default: ""
}
},
provide: function provide() {
return {
select: this
};
},
props: _extends({}, $props, {
_constants: {
type: Object,
default: function _default() {
return $constants;
}
},
id: [Number, String],
name: String,
size: String,
remote: Boolean,
remoteConfig: {
type: Object,
default: function _default2() {
return {
showIcon: false,
clearData: false,
autoSearch: false
};
}
},
title: String,
shape: String,
tip: String,
label: String,
loading: Boolean,
disabled: Boolean,
options: Array,
dataset: Object,
textField: {
type: String,
default: "label"
},
tabindex: {
type: String,
default: "1"
},
valueField: {
type: String,
default: "value"
},
placement: {
type: String,
default: "bottom-start"
},
showCheck: {
type: Boolean,
default: true
},
showAlloption: {
type: Boolean,
default: true
},
multiple: Boolean,
clearable: Boolean,
noDataText: String,
filterable: Boolean,
loadingText: String,
noMatchText: String,
popperClass: String,
allowCreate: Boolean,
collapseTags: Boolean,
remoteMethod: Function,
filterMethod: Function,
reserveKeyword: Boolean,
automaticDropdown: Boolean,
defaultFirstOption: Boolean,
modelValue: {},
valueKey: {
type: String,
default: "value"
},
placeholder: {
type: String,
default: function _default3() {
return t("ui.select.placeholder");
}
},
searchPlaceholder: {
type: String,
default: function _default4() {
return t("ui.select.pleaseSearch");
}
},
autocomplete: {
type: String,
default: "off"
},
multipleLimit: {
type: Number,
default: 0
},
popperAppendToBody: {
type: Boolean,
default: true
},
hideDrop: {
type: Boolean,
default: false
},
copyable: {
type: Boolean,
default: false
},
renderType: String,
gridOp: {
type: Object,
default: function _default5() {
return {};
}
},
treeOp: {
type: Object,
default: function _default6() {
return {};
}
},
delay: {
type: Number,
default: 200
},
readonly: Boolean,
dropStyle: {
type: Object,
default: function _default7() {
return {};
}
},
cacheOp: Object,
isDropInheritWidth: Boolean,
tagSelectable: {
type: Boolean,
default: false
},
selectConfig: {
type: Object,
default: function _default8() {
return {
checkMethod: function checkMethod() {
return true;
}
};
}
},
radioConfig: {
type: Object,
default: function _default9() {
return {
checkMethod: function checkMethod() {
return true;
}
};
}
},
allowCopy: {
type: Boolean,
default: false
},
textSplit: {
type: String,
default: ","
},
autoClose: Boolean,
queryDebounce: Number,
ignoreEnter: {
type: Boolean,
default: false
},
dropdownIcon: {
type: [Object, String],
default: function _default10() {
var defaultDropdownIcon = IconChevronDown();
defaultDropdownIcon.isDefault = true;
return defaultDropdownIcon;
}
},
disabledTooltipContent: String,
hoverExpand: {
type: Boolean,
default: false
},
optimization: [Boolean, Object],
displayOnly: {
type: Boolean,
default: false
},
initQuery: Function,
extraQueryParams: {
type: [Object, String, Boolean, Array, Number],
default: ""
},
updateDelay: {
type: Number,
default: 0
},
showTips: {
type: Boolean,
default: true
},
closeByMask: {
type: Boolean,
default: true
},
keepFocus: {
type: Boolean,
default: false
},
popperOptions: {
type: Object,
default: function _default11() {
return {
gpuAcceleration: false,
boundariesPadding: 0
};
}
},
trim: {
type: Boolean,
default: false
},
topCreate: {
type: Boolean,
default: false
},
topCreateText: {
type: String,
default: function _default12() {
return t("ui.select.add");
}
},
blank: {
type: Boolean,
default: false
},
// 以下为 tiny 新增
searchable: {
type: Boolean,
default: false
},
showEmptyImage: {
type: Boolean,
default: false
},
InputBoxType: {
type: String,
default: "input",
validator: function validator(value) {
return ["input", "underline"].includes(value);
}
},
tagType: {
type: String,
default: ""
},
clearNoMatchValue: {
type: Boolean,
default: false
},
showLimitText: {
type: Boolean,
default: false
},
showProportion: {
type: Boolean,
default: false
},
clickExpand: {
type: Boolean,
default: false
},
maxVisibleRows: {
type: Number,
default: $constants.MAX_VISIBLE_ROWS
},
allText: {
type: String,
default: ""
},
showAllTextTag: {
type: Boolean,
default: false
}
}),
setup: function setup(props, context) {
return $setup({
props,
context,
template
});
}
});
var version = "3.undefined";
BaseSelect.model = {
prop: "modelValue",
event: "update:modelValue"
};
BaseSelect.install = function(Vue) {
Vue.component(BaseSelect.name, BaseSelect);
};
BaseSelect.version = version;
export {
BaseSelect as default
};