UNPKG

@opentiny/vue-base-select

Version:

401 lines (400 loc) 8.34 kB
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 };