UNPKG

element-nice-ui

Version:

A Component Library for Vue.js.

1,434 lines (1,366 loc) 76 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 188); /******/ }) /************************************************************************/ /******/ ({ /***/ 117: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/tag"); /***/ }), /***/ 13: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/mixins/emitter"); /***/ }), /***/ 162: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/new-tree"); /***/ }), /***/ 17: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/utils/vue-popper"); /***/ }), /***/ 188: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=1cb0432a var render = function render() { var _vm = this, _c = _vm._self._c return _c( "div", { directives: [ { name: "clickoutside", rawName: "v-clickoutside", value: _vm.handleClose, expression: "handleClose", }, ], staticClass: "el-select", class: [_vm.selectSize ? "el-select--" + _vm.selectSize : ""], on: { click: function ($event) { $event.stopPropagation() return _vm.toggleMenu.apply(null, arguments) }, }, }, [ _vm.multiple ? _c( "div", { ref: "tags", staticClass: "el-select__tags", style: { "max-width": _vm.inputWidth - 32 + "px", width: "100%" }, }, [ _vm.collapseTags && _vm.selected.length ? _c( "span", [ _c( "el-tag", { attrs: { closable: !_vm.selectDisabled, size: _vm.collapseTagSize, hit: _vm.selected[0].hitState, type: "info", "disable-transitions": "", }, on: { close: function ($event) { return _vm.deleteTag($event, _vm.selected[0]) }, }, }, [ _c("span", { staticClass: "el-select__tags-text" }, [ _vm._v(_vm._s(_vm.selected[0].currentLabel)), ]), ] ), _vm.selected.length > 1 ? _c( "el-tag", { attrs: { closable: false, size: _vm.collapseTagSize, type: "info", "disable-transitions": "", }, }, [ _c( "span", { staticClass: "el-select__tags-text" }, [_vm._v("+ " + _vm._s(_vm.selected.length - 1))] ), ] ) : _vm._e(), ], 1 ) : _vm._e(), !_vm.collapseTags ? _c( "span", _vm._l(_vm.selected, function (item) { return _c( "el-tag", { key: _vm.getValueKey(item), attrs: { closable: !_vm.selectDisabled, size: _vm.collapseTagSize, hit: item.hitState, type: "info", "disable-transitions": "", }, on: { close: function ($event) { return _vm.deleteTag($event, item) }, }, }, [ _c("span", { staticClass: "el-select__tags-text" }, [ _vm._v(_vm._s(item.currentLabel)), ]), ] ) }), 1 ) : _vm._e(), _vm.canFilter ? _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.query, expression: "query", }, ], ref: "input", staticClass: "el-select__input", class: [_vm.selectSize ? `is-${_vm.selectSize}` : ""], style: { "flex-grow": "1", width: _vm.inputLength / (_vm.inputWidth - 32) + "%", "max-width": _vm.inputWidth - 42 + "px", }, attrs: { type: "text", disabled: _vm.selectDisabled, autocomplete: _vm.autoComplete || _vm.autocomplete, }, domProps: { value: _vm.query }, on: { focus: _vm.handleFocus, blur: function ($event) { _vm.softFocus = false }, keyup: _vm.managePlaceholder, keydown: [ _vm.resetInputState, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "down", 40, $event.key, [ "Down", "ArrowDown", ]) ) return null $event.preventDefault() return _vm.navigateOptions("next") }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "up", 38, $event.key, [ "Up", "ArrowUp", ]) ) return null $event.preventDefault() return _vm.navigateOptions("prev") }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k( $event.keyCode, "enter", 13, $event.key, "Enter" ) ) return null $event.preventDefault() return _vm.selectOption.apply(null, arguments) }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "esc", 27, $event.key, [ "Esc", "Escape", ]) ) return null $event.stopPropagation() $event.preventDefault() _vm.visible = false }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k( $event.keyCode, "delete", [8, 46], $event.key, ["Backspace", "Delete", "Del"] ) ) return null return _vm.deletePrevTag.apply(null, arguments) }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab") ) return null _vm.visible = false }, ], compositionstart: _vm.handleComposition, compositionupdate: _vm.handleComposition, compositionend: _vm.handleComposition, input: [ function ($event) { if ($event.target.composing) return _vm.query = $event.target.value }, _vm.debouncedQueryChange, ], }, }) : _vm._e(), ] ) : _vm._e(), _c("el-input", { ref: "reference", class: { "is-focus": _vm.visible }, attrs: { value: _vm.selectedLabel, type: "text", placeholder: _vm.currentPlaceholder, name: _vm.name, id: _vm.id, autocomplete: _vm.autoComplete || _vm.autocomplete, size: _vm.selectSize, disabled: _vm.selectDisabled, readonly: _vm.selectReadonly, "validate-event": false, tabindex: _vm.multiple && _vm.canFilter ? "-1" : null, clearable: false, }, on: { input: function ($event) { _vm.selectedLabel = $event }, focus: _vm.handleFocus, blur: _vm.handleBlur, }, nativeOn: { keyup: function ($event) { return _vm.debouncedOnInputChange.apply(null, arguments) }, keydown: [ function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "down", 40, $event.key, [ "Down", "ArrowDown", ]) ) return null $event.stopPropagation() $event.preventDefault() return _vm.navigateOptions("next") }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "up", 38, $event.key, ["Up", "ArrowUp"]) ) return null $event.stopPropagation() $event.preventDefault() return _vm.navigateOptions("prev") }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter") ) return null $event.preventDefault() return _vm.selectOption.apply(null, arguments) }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"]) ) return null $event.stopPropagation() $event.preventDefault() _vm.visible = false }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab") ) return null _vm.visible = false }, ], paste: function ($event) { return _vm.debouncedOnInputChange.apply(null, arguments) }, mouseenter: function ($event) { _vm.inputHovering = true }, mouseleave: function ($event) { _vm.inputHovering = false }, }, scopedSlots: _vm._u( [ { key: "prepend", fn: function () { return [_vm._t("prepend")] }, proxy: true, }, _vm.$slots.prefix ? { key: "prefix", fn: function () { return [_vm._t("prefix")] }, proxy: true, } : null, { key: "suffix", fn: function () { return [ _vm.showClose ? _c("i", { staticClass: "el-select__caret el-input__icon el-icon-circle-close", on: { click: _vm.handleClearClick }, }) : _c("i", { class: [ "el-select__caret", "el-input__icon", "el-icon-" + _vm.iconClass, ], }), ] }, proxy: true, }, ], null, true ), }), _c( "transition", { attrs: { name: "el-zoom-in-top" }, on: { "before-enter": _vm.handleMenuEnter, "after-leave": _vm.doDestroy, }, }, [ _c( "el-select-menu", { directives: [ { name: "show", rawName: "v-show", value: _vm.visible && _vm.emptyText !== false, expression: "visible && emptyText !== false", }, ], ref: "popper", class: [_vm.inline ? "el-select--inline" : ""], attrs: { "append-to-body": _vm.popperAppendToBody }, }, [ _vm._t("tools"), !_vm.tree ? [ _c( "el-scrollbar", { directives: [ { name: "show", rawName: "v-show", value: _vm.internalOptions.length > 0 && !_vm.loading, expression: "internalOptions.length > 0 && !loading", }, ], ref: "scrollbar", class: { "is-empty": !_vm.allowCreate && _vm.query && _vm.filteredOptionsCount === 0, }, attrs: { tag: "ul", "wrap-class": "el-select-dropdown__wrap", "view-class": "el-select-dropdown__list", }, }, [ _vm.showNewOption ? _c("el-option", { attrs: { value: _vm.query, created: "" }, }) : _vm._e(), _vm.max ? _vm._l( _vm.visibleOptions, function (option, index) { return _c( "el-option", { key: option.value, attrs: { value: option.value, label: option.label, option: option, }, }, [ _vm._t("default", null, null, { option, index, }), ], 2 ) } ) : _vm._l( _vm.computedOptions, function (option, index) { return _c( "el-option", { key: option.value, attrs: { value: option.value, label: option.label, option: option, }, }, [ _vm._t("default", null, null, { option, index, }), ], 2 ) } ), ], 2 ), ] : [ _c( "el-scrollbar", { directives: [ { name: "show", rawName: "v-show", value: _vm.computedOptions.length > 0 && !_vm.loading, expression: "computedOptions.length > 0 && !loading", }, ], ref: "scrollbar", class: { "is-empty": !_vm.allowCreate && _vm.query && !_vm.tree && _vm.filteredOptionsCount === 0, }, attrs: { tag: "ul", "wrap-class": [ "el-select-dropdown__wrap", _vm.dropdownClass, ], "view-class": "el-select-dropdown__list", }, }, [ _c("el-new-tree", { ref: "tree", attrs: { "tree-data": _vm.computedOptions, checkable: _vm.multiple, "checkable-filter": _vm.checkable, "selectable-filter": _vm.selectable, "filter-node-method": _vm.treeNodeFilter, }, on: { input: _vm.onTreeInput, change: _vm.onTreeChange, }, scopedSlots: _vm._u( [ _vm.$scopedSlots.default ? { key: "default", fn: function (scope) { return [ _vm._t("default", null, null, scope), ] }, } : null, ], null, true ), }), ], 1 ), ], _vm.emptyText && ((!_vm.tree && !_vm.allowCreate) || (_vm.tree && _vm.computedOptions.length === 0) || _vm.loading || (_vm.allowCreate && _vm.internalOptions.length === 0)) ? [ _vm.$slots.empty ? _vm._t("empty") : _c("p", { staticClass: "el-select-dropdown__empty" }, [ _vm._v( "\n " + _vm._s(_vm.emptyText) + "\n " ), ]), ] : _vm._e(), ], 2 ), ], 1 ), ], 1 ) } var staticRenderFns = [] render._withStripped = true // CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=1cb0432a // EXTERNAL MODULE: external "element-nice-ui/lib/mixins/emitter" var emitter_ = __webpack_require__(13); var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_); // EXTERNAL MODULE: external "element-nice-ui/lib/mixins/focus" var focus_ = __webpack_require__(49); var focus_default = /*#__PURE__*/__webpack_require__.n(focus_); // EXTERNAL MODULE: external "element-nice-ui/lib/mixins/locale" var locale_ = __webpack_require__(19); var locale_default = /*#__PURE__*/__webpack_require__.n(locale_); // EXTERNAL MODULE: external "element-nice-ui/lib/input" var input_ = __webpack_require__(22); var input_default = /*#__PURE__*/__webpack_require__.n(input_); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=template&id=46c8c0a6 var select_dropdownvue_type_template_id_46c8c0a6_render = function render() { var _vm = this, _c = _vm._self._c return _c( "div", { staticClass: "el-select-dropdown el-popper", class: [{ "is-multiple": _vm.$parent.multiple }, _vm.popperClass], style: { minWidth: _vm.minWidth, maxWidth: _vm.maxWidth }, }, [_vm._t("default")], 2 ) } var select_dropdownvue_type_template_id_46c8c0a6_staticRenderFns = [] select_dropdownvue_type_template_id_46c8c0a6_render._withStripped = true // CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=template&id=46c8c0a6 // EXTERNAL MODULE: external "element-nice-ui/lib/utils/vue-popper" var vue_popper_ = __webpack_require__(17); var vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_); // CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.28.0_webpack@4.47.0/node_modules/babel-loader/lib!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=script&lang=js /* harmony default export */ var select_dropdownvue_type_script_lang_js = ({ name: 'ElSelectDropdown', componentName: 'ElSelectDropdown', mixins: [vue_popper_default.a], props: { placement: { default: 'bottom-start' }, boundariesPadding: { default: 0 }, popperOptions: { default() { return { gpuAcceleration: false }; } }, visibleArrow: { default: true }, appendToBody: { type: Boolean, default: true } }, data() { return { minWidth: '', maxWidth: '' }; }, computed: { popperClass() { return this.$parent.popperClass; } }, watch: { '$parent.inputWidth'() { const rect = this.$parent.$el.getBoundingClientRect(); this.minWidth = rect.width + 'px'; if (this.$parent.inline) { this.maxWidth = rect.width + 'px'; } } }, mounted() { this.referenceElm = this.$parent.$refs.reference.$el; this.$parent.popperElm = this.popperElm = this.$el; this.$on('updatePopper', () => { if (this.$parent.visible) this.updatePopper(); }); this.$on('destroyPopper', this.destroyPopper); } }); // CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=script&lang=js /* harmony default export */ var src_select_dropdownvue_type_script_lang_js = (select_dropdownvue_type_script_lang_js); // EXTERNAL MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(2); // CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( src_select_dropdownvue_type_script_lang_js, select_dropdownvue_type_template_id_46c8c0a6_render, select_dropdownvue_type_template_id_46c8c0a6_staticRenderFns, false, null, null, null ) /* harmony default export */ var select_dropdown = (component.exports); // EXTERNAL MODULE: ./packages/select/src/option.vue + 4 modules var src_option = __webpack_require__(76); // EXTERNAL MODULE: external "element-nice-ui/lib/tag" var tag_ = __webpack_require__(117); var tag_default = /*#__PURE__*/__webpack_require__.n(tag_); // EXTERNAL MODULE: external "element-nice-ui/lib/scrollbar" var scrollbar_ = __webpack_require__(32); var scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_); // EXTERNAL MODULE: external "throttle-debounce/debounce" var debounce_ = __webpack_require__(28); var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/clickoutside" var clickoutside_ = __webpack_require__(27); var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/resize-event" var resize_event_ = __webpack_require__(35); // EXTERNAL MODULE: external "element-nice-ui/lib/locale" var lib_locale_ = __webpack_require__(39); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/scroll-into-view" var scroll_into_view_ = __webpack_require__(70); var scroll_into_view_default = /*#__PURE__*/__webpack_require__.n(scroll_into_view_); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/util" var util_ = __webpack_require__(5); // CONCATENATED MODULE: ./packages/select/src/navigation-mixin.js /* harmony default export */ var navigation_mixin = ({ data() { return { hoverOption: -1 }; }, computed: { optionsAllDisabled() { return this.internalOptions.filter(option => option.visible).every(option => option.disabled); } }, watch: { hoverIndex(val) { if (typeof val === 'number' && val > -1) { this.hoverOption = this.internalOptions[val] || {}; } this.internalOptions.forEach(option => { option.hover = this.hoverOption === option; }); } }, methods: { navigateOptions(direction) { if (!this.visible) { this.visible = true; return; } if (this.internalOptions.length === 0 || this.filteredOptionsCount === 0) return; if (!this.optionsAllDisabled) { if (direction === 'next') { this.hoverIndex++; if (this.hoverIndex === this.internalOptions.length) { this.hoverIndex = 0; } } else if (direction === 'prev') { this.hoverIndex--; if (this.hoverIndex < 0) { this.hoverIndex = this.internalOptions.length - 1; } } const option = this.internalOptions[this.hoverIndex]; if (option.disabled === true || option.groupDisabled === true || !option.visible) { this.navigateOptions(direction); } this.$nextTick(() => this.scrollToOption(this.hoverOption)); } } } }); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/shared" var shared_ = __webpack_require__(31); // EXTERNAL MODULE: external "element-nice-ui/lib/new-tree" var new_tree_ = __webpack_require__(162); var new_tree_default = /*#__PURE__*/__webpack_require__.n(new_tree_); // CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.28.0_webpack@4.47.0/node_modules/babel-loader/lib!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* harmony default export */ var selectvue_type_script_lang_js = ({ mixins: [emitter_default.a, locale_default.a, focus_default()('reference'), navigation_mixin], name: 'ElSelect', componentName: 'ElSelect', inject: { elForm: { default: '' }, elFormItem: { default: '' } }, provide() { return { select: this }; }, props: { checkable: { type: Function }, dropdownClass: String, selectable: { type: Function }, max: { type: Number, default: 100 }, label: String, name: String, id: String, /** 行内 */ inline: Boolean, /** 自动请求 */ api: { type: String }, dataPath: String, tree: { type: Boolean }, value: { required: true }, options: { type: [Object, Array] }, optionLabel: { type: String, default: 'label' }, optionValue: { type: String, default: 'value' }, childrenKey: { type: String, default: 'children' }, autocomplete: { type: String, default: 'off' }, /** @Deprecated in next major version */ autoComplete: { type: String, validator(val) { false && false; return true; } }, automaticDropdown: Boolean, size: String, disabled: { type: Boolean, default: undefined }, readonly: { type: Boolean, default: undefined }, clearable: { type: Boolean, default: true }, filterable: Boolean, allowCreate: Boolean, loading: Boolean, popperClass: String, remote: Boolean, loadingText: String, noMatchText: String, noDataText: String, remoteMethod: Function, filterMethod: Function, multiple: Boolean, multipleLimit: { type: Number, default: 0 }, placeholder: { type: String, default() { return Object(lib_locale_["t"])('el.select.placeholder'); } }, defaultFirstOption: Boolean, reserveKeyword: Boolean, valueKey: { type: String, default: 'value' }, collapseTags: Boolean, popperAppendToBody: { type: Boolean, default: true } }, data() { return { // 可见的选项 (为了处理大数据量) visibleOptions: [], internalOptions: [], /** 从服务器中查询到的选项 */ remoteOptions: [], cachedOptions: [], createdLabel: null, createdSelected: false, selected: this.multiple ? [] : {}, inputLength: 20, inputWidth: 0, initialInputHeight: 0, cachedPlaceHolder: '', optionsCount: 0, filteredOptionsCount: 0, visible: false, softFocus: false, selectedLabel: '', hoverIndex: -1, query: '', previousQuery: null, inputHovering: false, currentPlaceholder: '', menuVisibleOnFocus: false, isOnComposition: false, isSilentBlur: false }; }, computed: { canFilter() { return this.filterable || this.tree || this.computedOptions.length > 6; }, computedOptions() { let mapper; const { optionValue: ov, optionLabel: ol } = this; if (this.tree) { mapper = option => { let value = option[ov]; let label = option[ol]; let children = option[this.childrenKey]; let item = _objectSpread(_objectSpread({}, option), {}, { value, label }); if (children && children.length) { item.children = children.map(mapper); } if (this.childrenKey !== 'children') { delete item[this.childrenKey]; } return item; }; } else { mapper = option => { let value = option[ov]; let label = option[ol]; return _objectSpread(_objectSpread({}, option), {}, { value, label }); }; } let result = []; if (this.options) { if (Array.isArray(this.options)) { result = this.options.map(mapper); } else if (!this.tree) { result = Object.keys(this.options).map(key => ({ value: key, label: this.options[key] })); } } else { result = this.remoteOptions.map(mapper); } // 出现改动时替代visibleOptions if (this.max) { let len = result.length; this.visibleOptions = len > this.max ? result.slice(0, this.max) : result; } return result; }, _elFormItemSize() { return (this.elFormItem || {}).elFormItemSize; }, selectReadonly() { return Object(util_["getDefined"])(this.readonly, (this.elForm || {}).readonly, !this.canFilter || this.multiple || !Object(util_["isIE"])() && !Object(util_["isEdge"])() && !this.visible); }, showClose() { let hasValue = this.multiple ? Array.isArray(this.value) && this.value.length > 0 : this.value !== undefined && this.value !== null && this.value !== ''; let criteria = this.clearable && !this.selectDisabled && this.inputHovering && hasValue; return criteria; }, iconClass() { return this.remote && this.canFilter ? '' : this.visible ? 'arrow-up is-reverse' : 'arrow-up'; }, debounce() { return this.remote ? 300 : 0; }, emptyText() { if (this.loading) { return this.loadingText || this.t('el.select.loading'); } else { if (this.remote && this.query === '' && this.internalOptions.length === 0) return false; if (this.canFilter && this.query && this.internalOptions.length > 0 && this.filteredOptionsCount === 0) { return this.noMatchText || this.t('el.select.noMatch'); } if (this.internalOptions.length === 0) { return this.noDataText || this.t('el.select.noData'); } } return null; }, showNewOption() { let hasExistingOption = this.internalOptions.filter(option => !option.created).some(option => option.currentLabel === this.query); return this.canFilter && this.allowCreate && this.query !== '' && !hasExistingOption; }, selectSize() { return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size; }, selectDisabled() { return Object(util_["getDefined"])(this.disabled, (this.elForm || {}).disabled, false); }, collapseTagSize() { return ['small', 'mini'].indexOf(this.selectSize) > -1 ? 'mini' : 'small'; } }, components: { ElInput: input_default.a, ElSelectMenu: select_dropdown, ElOption: src_option["a" /* default */], ElTag: tag_default.a, ElScrollbar: scrollbar_default.a, ElNewTree: new_tree_default.a }, directives: { Clickoutside: clickoutside_default.a }, watch: { selectDisabled() { this.$nextTick(() => { this.resetInputHeight(); }); }, api() { this.getRemoteData(); }, placeholder(val) { this.cachedPlaceHolder = this.currentPlaceholder = val; }, value(val, oldVal) { if (this.multiple) { this.resetInputHeight(); if (val && val.length > 0 || this.$refs.input && this.query !== '') { this.currentPlaceholder = ''; } else { this.currentPlaceholder = this.cachedPlaceHolder; } if (this.canFilter && !this.reserveKeyword) { this.query = ''; this.handleQueryChange(this.query); } } this.computedOptions.length && this.setSelected(); if (this.canFilter && !this.multiple) { this.inputLength = 20; } if (!Object(util_["valueEquals"])(val, oldVal)) { this.dispatch('ElFormItem', 'el.form.change', val); } }, visible(val) { if (!val) { this.broadcast('ElSelectDropdown', 'destroyPopper'); if (this.$refs.input) { this.$refs.input.blur(); } this.query = ''; this.previousQuery = null; this.selectedLabel = ''; this.inputLength = 20; this.menuVisibleOnFocus = false; this.resetHoverIndex(); this.$nextTick(() => { if (this.$refs.input && this.$refs.input.value === '' && this.selected.length === 0) { this.currentPlaceholder = this.cachedPlaceHolder; } }); if (!this.multiple) { if (this.selected) { if (this.canFilter && this.allowCreate && this.createdSelected && this.createdLabel) { this.selectedLabel = this.createdLabel; } else { this.selectedLabel = this.selected.currentLabel; } if (this.canFilter) this.query = this.selectedLabel; } if (this.canFilter) { this.currentPlaceholder = this.cachedPlaceHolder; } } } else { this.broadcast('ElSelectDropdown', 'updatePopper'); if (this.canFilter) { this.query = this.remote ? '' : this.selectedLabel; // 有选择了项 重新过滤 if (this.tree && this.canFilter) { this.$refs.tree.filter(''); } this.handleQueryChange(this.query); if (this.multiple) { this.$refs.input.focus(); } else { if (!this.remote) { this.max ? this.filterOptions('') : this.broadcast('ElOption', 'queryChange', ''); this.broadcast('ElOptionGroup', 'queryChange'); } if (this.selectedLabel) { this.currentPlaceholder = this.selectedLabel; this.selectedLabel = ''; } } } } this.$emit('visible-change', val); }, // option更新后应当设置选择的值 computedOptions: { handler() { if (this.tree) { this.$nextTick(() => { if (!this.$refs.tree) return; if (this.multiple) { this.$refs.tree.setTreeChecked(this.value); } else { this.$refs.tree.setTreeSelected(this.value); } this.setSelected(); }); } else { this.setSelected(); } }, immediate: true }, internalOptions(v) { if (this.$isServer || this.tree) return; this.$nextTick(() => { this.broadcast('ElSelectDropdown', 'updatePopper'); }); if (this.multiple) { this.resetInputHeight(); } let inputs = this.$el.querySelectorAll('input'); if (Array.prototype.indexOf.call(inputs, document.activeElement) === -1) { this.setSelected(); } if (this.defaultFirstOption && (this.canFilter || this.remote) && this.filteredOptionsCount) { this.checkDefaultFirstOption(); } } }, methods: { treeNodeFilter(value, data) { if (!value) return true; return data.label.includes(value); }, handleComposition(event) { const text = event.target.value; if (event.type === 'compositionend') { this.isOnComposition = false; this.$nextTick(_ => this.handleQueryChange(text)); } else { const lastCharacter = text[text.length - 1] || ''; this.isOnComposition = !Object(shared_["isKorean"])(lastCharacter); } }, // 在大数据量下特殊处理的过滤 filterOptions(val) { if (!val) { let len = this.computedOptions.length; this.visibleOptions = len > this.max ? this.computedOptions.slice(0, this.max) : this.computedOptions; return; } this.visibleOptions = this.computedOptions.filter(item => { return item.label.includes(val); }); }, handleQueryChange(val) { if (this.previousQuery === val || this.isOnComposition) return; if (this.previousQuery === null && (typeof this.filterMethod === 'function' || typeof this.remoteMethod === 'function')) { this.previousQuery = val; return; } // 如果这是一个树形选择器 if (this.tree) { if (this.previousQuery !== null) { this.$refs.tree.filter(val); } this.previousQuery = val; this.$nextTick(() => { if (this.visible) this.broadcast('ElSelectDropdown', 'updatePopper'); }); this.hoverIndex = -1; return; } this.previousQuery = val; this.$nextTick(() => { if (this.visible) this.broadcast('ElSelectDropdown', 'updatePopper'); }); this.hoverIndex = -1; if (this.multiple && this.canFilter) { this.$nextTick(() => { const length = this.$refs.input.value.length * 15 + 20; this.inputLength = this.collapseTags ? Math.min(50, length) : length; this.managePlaceholder(); this.resetInputHeight(); }); } if (this.remote && typeof this.remoteMethod === 'function') { this.hoverIndex = -1; this.remoteMethod(val); } else if (typeof this.filterMethod === 'function') { this.filterMethod(val); this.broadcast('ElOptionGroup', 'queryChange'); } else { this.filteredOptionsCount = this.optionsCount; if (this.max) { this.filterOptions(val); } else { this.broadcast('ElOption', 'queryChange', val); } this.broadcast('ElOptionGroup', 'queryChange'); } if (this.defaultFirstOption && (this.canFilter || this.remote) && this.filteredOptionsCount) { this.checkDefaultFirstOption(); } }, scrollToOption(option) { const target = Array.isArray(option) && option[0] ? option[0].$el : option.$el; if (this.$refs.popper && target) { const menu = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap'); scroll_into_view_default()(menu, target); } this.$refs.scrollbar && this.$refs.scrollbar.handleScroll(); }, handleMenuEnter() { this.$nextTick(() => this.scrollToOption(this.selected)); }, emitChange(val, label, obj) { if (!Object(util_["valueEquals"])(this.value, val)) { this.$emit('change', val, label, obj); } }, getOption(value) { let option; const isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]'; const isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]'; const isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]'; if (this.tree) { this.$refs.tree.setTreeSelected(value); // 在此处获取node, 列表刚渲染的时候需要先设置值 let node = this.$refs.tree.getCurrentNode(); if (