element-nice-ui
Version:
A Component Library for Vue.js.
1,434 lines (1,366 loc) • 76 kB
JavaScript
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 (