lepu-test-platform-web/node_modules/element-ui/lib/cascader.js

1421 lines
38 KiB
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 = 78);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functioal component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
/***/ }),
/***/ 10:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/input");
/***/ }),
/***/ 11:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/mixins/migrating");
/***/ }),
/***/ 12:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/clickoutside");
/***/ }),
/***/ 14:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/scrollbar");
/***/ }),
/***/ 16:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/resize-event");
/***/ }),
/***/ 17:
/***/ (function(module, exports) {
module.exports = require("throttle-debounce/debounce");
/***/ }),
/***/ 19:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/locale");
/***/ }),
/***/ 20:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/types");
/***/ }),
/***/ 21:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/shared");
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/util");
/***/ }),
/***/ 32:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/aria-utils");
/***/ }),
/***/ 38:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/tag");
/***/ }),
/***/ 4:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/mixins/emitter");
/***/ }),
/***/ 5:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/utils/vue-popper");
/***/ }),
/***/ 50:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/cascader-panel");
/***/ }),
/***/ 6:
/***/ (function(module, exports) {
module.exports = require("element-ui/lib/mixins/locale");
/***/ }),
/***/ 78:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=template&id=032537a6&
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{
directives: [
{
name: "clickoutside",
rawName: "v-clickoutside",
value: function() {
return _vm.toggleDropDownVisible(false)
},
expression: "() => toggleDropDownVisible(false)"
}
],
ref: "reference",
class: [
"el-cascader",
_vm.realSize && "el-cascader--" + _vm.realSize,
{ "is-disabled": _vm.isDisabled }
],
on: {
mouseenter: function($event) {
_vm.inputHover = true
},
mouseleave: function($event) {
_vm.inputHover = false
},
click: function() {
return _vm.toggleDropDownVisible(_vm.readonly ? undefined : true)
},
keydown: _vm.handleKeyDown
}
},
[
_c(
"el-input",
{
ref: "input",
class: { "is-focus": _vm.dropDownVisible },
attrs: {
size: _vm.realSize,
placeholder: _vm.placeholder,
readonly: _vm.readonly,
disabled: _vm.isDisabled,
"validate-event": false
},
on: {
focus: _vm.handleFocus,
blur: _vm.handleBlur,
input: _vm.handleInput
},
model: {
value: _vm.multiple ? _vm.presentText : _vm.inputValue,
callback: function($$v) {
_vm.multiple ? _vm.presentText : (_vm.inputValue = $$v)
},
expression: "multiple ? presentText : inputValue"
}
},
[
_c("template", { slot: "suffix" }, [
_vm.clearBtnVisible
? _c("i", {
key: "clear",
staticClass: "el-input__icon el-icon-circle-close",
on: {
click: function($event) {
$event.stopPropagation()
return _vm.handleClear($event)
}
}
})
: _c("i", {
key: "arrow-down",
class: [
"el-input__icon",
"el-icon-arrow-down",
_vm.dropDownVisible && "is-reverse"
],
on: {
click: function($event) {
$event.stopPropagation()
_vm.toggleDropDownVisible()
}
}
})
])
],
2
),
_vm.multiple
? _c(
"div",
{ staticClass: "el-cascader__tags" },
[
_vm._l(_vm.presentTags, function(tag, index) {
return _c(
"el-tag",
{
key: tag.key,
attrs: {
type: "info",
size: _vm.tagSize,
hit: tag.hitState,
closable: tag.closable,
"disable-transitions": ""
},
on: {
close: function($event) {
_vm.deleteTag(index)
}
}
},
[_c("span", [_vm._v(_vm._s(tag.text))])]
)
}),
_vm.filterable && !_vm.isDisabled
? _c("input", {
directives: [
{
name: "model",
rawName: "v-model.trim",
value: _vm.inputValue,
expression: "inputValue",
modifiers: { trim: true }
}
],
staticClass: "el-cascader__search-input",
attrs: {
type: "text",
placeholder: _vm.presentTags.length ? "" : _vm.placeholder
},
domProps: { value: _vm.inputValue },
on: {
input: [
function($event) {
if ($event.target.composing) {
return
}
_vm.inputValue = $event.target.value.trim()
},
function(e) {
return _vm.handleInput(_vm.inputValue, e)
}
],
click: function($event) {
$event.stopPropagation()
_vm.toggleDropDownVisible(true)
},
keydown: function($event) {
if (
!("button" in $event) &&
_vm._k(
$event.keyCode,
"delete",
[8, 46],
$event.key,
["Backspace", "Delete", "Del"]
)
) {
return null
}
return _vm.handleDelete($event)
},
blur: function($event) {
_vm.$forceUpdate()
}
}
})
: _vm._e()
],
2
)
: _vm._e(),
_c(
"transition",
{
attrs: { name: "el-zoom-in-top" },
on: { "after-leave": _vm.handleDropdownLeave }
},
[
_c(
"div",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.dropDownVisible,
expression: "dropDownVisible"
}
],
ref: "popper",
class: ["el-popper", "el-cascader__dropdown", _vm.popperClass]
},
[
_c("el-cascader-panel", {
directives: [
{
name: "show",
rawName: "v-show",
value: !_vm.filtering,
expression: "!filtering"
}
],
ref: "panel",
attrs: {
options: _vm.options,
props: _vm.config,
border: false,
"render-label": _vm.$scopedSlots.default
},
on: {
"expand-change": _vm.handleExpandChange,
close: function($event) {
_vm.toggleDropDownVisible(false)
}
},
model: {
value: _vm.checkedValue,
callback: function($$v) {
_vm.checkedValue = $$v
},
expression: "checkedValue"
}
}),
_vm.filterable
? _c(
"el-scrollbar",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.filtering,
expression: "filtering"
}
],
ref: "suggestionPanel",
staticClass: "el-cascader__suggestion-panel",
attrs: {
tag: "ul",
"view-class": "el-cascader__suggestion-list"
},
nativeOn: {
keydown: function($event) {
return _vm.handleSuggestionKeyDown($event)
}
}
},
[
_vm.suggestions.length
? _vm._l(_vm.suggestions, function(item, index) {
return _c(
"li",
{
key: item.uid,
class: [
"el-cascader__suggestion-item",
item.checked && "is-checked"
],
attrs: { tabindex: -1 },
on: {
click: function($event) {
_vm.handleSuggestionClick(index)
}
}
},
[
_c("span", [_vm._v(_vm._s(item.text))]),
item.checked
? _c("i", { staticClass: "el-icon-check" })
: _vm._e()
]
)
})
: _vm._t("empty", [
_c(
"li",
{ staticClass: "el-cascader__empty-text" },
[_vm._v(_vm._s(_vm.t("el.cascader.noMatch")))]
)
])
],
2
)
: _vm._e()
],
1
)
]
)
],
1
)
}
var staticRenderFns = []
render._withStripped = true
// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=template&id=032537a6&
// EXTERNAL MODULE: external "element-ui/lib/utils/vue-popper"
var vue_popper_ = __webpack_require__(5);
var vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);
// EXTERNAL MODULE: external "element-ui/lib/utils/clickoutside"
var clickoutside_ = __webpack_require__(12);
var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);
// EXTERNAL MODULE: external "element-ui/lib/mixins/emitter"
var emitter_ = __webpack_require__(4);
var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
// EXTERNAL MODULE: external "element-ui/lib/mixins/locale"
var locale_ = __webpack_require__(6);
var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
// EXTERNAL MODULE: external "element-ui/lib/mixins/migrating"
var migrating_ = __webpack_require__(11);
var migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);
// EXTERNAL MODULE: external "element-ui/lib/input"
var input_ = __webpack_require__(10);
var input_default = /*#__PURE__*/__webpack_require__.n(input_);
// EXTERNAL MODULE: external "element-ui/lib/tag"
var tag_ = __webpack_require__(38);
var tag_default = /*#__PURE__*/__webpack_require__.n(tag_);
// EXTERNAL MODULE: external "element-ui/lib/scrollbar"
var scrollbar_ = __webpack_require__(14);
var scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);
// EXTERNAL MODULE: external "element-ui/lib/cascader-panel"
var cascader_panel_ = __webpack_require__(50);
var cascader_panel_default = /*#__PURE__*/__webpack_require__.n(cascader_panel_);
// EXTERNAL MODULE: external "element-ui/lib/utils/aria-utils"
var aria_utils_ = __webpack_require__(32);
var aria_utils_default = /*#__PURE__*/__webpack_require__.n(aria_utils_);
// EXTERNAL MODULE: external "element-ui/lib/locale"
var lib_locale_ = __webpack_require__(19);
// EXTERNAL MODULE: external "element-ui/lib/utils/util"
var util_ = __webpack_require__(3);
// EXTERNAL MODULE: external "element-ui/lib/utils/types"
var types_ = __webpack_require__(20);
// EXTERNAL MODULE: external "element-ui/lib/utils/shared"
var shared_ = __webpack_require__(21);
// EXTERNAL MODULE: external "element-ui/lib/utils/resize-event"
var resize_event_ = __webpack_require__(16);
// EXTERNAL MODULE: external "throttle-debounce/debounce"
var debounce_ = __webpack_require__(17);
var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var KeyCode = aria_utils_default.a.keys;
var MigratingProps = {
expandTrigger: {
newProp: 'expandTrigger',
type: String
},
changeOnSelect: {
newProp: 'checkStrictly',
type: Boolean
},
hoverThreshold: {
newProp: 'hoverThreshold',
type: Number
}
};
var PopperMixin = {
props: {
placement: {
type: String,
default: 'bottom-start'
},
appendToBody: vue_popper_default.a.props.appendToBody,
visibleArrow: {
type: Boolean,
default: true
},
arrowOffset: vue_popper_default.a.props.arrowOffset,
offset: vue_popper_default.a.props.offset,
boundariesPadding: vue_popper_default.a.props.boundariesPadding,
popperOptions: vue_popper_default.a.props.popperOptions
},
methods: vue_popper_default.a.methods,
data: vue_popper_default.a.data,
beforeDestroy: vue_popper_default.a.beforeDestroy
};
var InputSizeMap = {
medium: 36,
small: 32,
mini: 28
};
/* harmony default export */ var cascadervue_type_script_lang_js_ = ({
name: 'ElCascader',
directives: { Clickoutside: clickoutside_default.a },
mixins: [PopperMixin, emitter_default.a, locale_default.a, migrating_default.a],
inject: {
elForm: {
default: ''
},
elFormItem: {
default: ''
}
},
components: {
ElInput: input_default.a,
ElTag: tag_default.a,
ElScrollbar: scrollbar_default.a,
ElCascaderPanel: cascader_panel_default.a
},
props: {
value: {},
options: Array,
props: Object,
size: String,
placeholder: {
type: String,
default: function _default() {
return Object(lib_locale_["t"])('el.cascader.placeholder');
}
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
filterMethod: Function,
separator: {
type: String,
default: ' / '
},
showAllLevels: {
type: Boolean,
default: true
},
collapseTags: Boolean,
debounce: {
type: Number,
default: 300
},
beforeFilter: {
type: Function,
default: function _default() {
return function () {};
}
},
popperClass: String
},
data: function data() {
return {
dropDownVisible: false,
checkedValue: this.value || null,
inputHover: false,
inputValue: null,
presentText: null,
presentTags: [],
checkedNodes: [],
filtering: false,
suggestions: [],
inputInitialHeight: 0,
pressDeleteCount: 0
};
},
computed: {
realSize: function realSize() {
var _elFormItemSize = (this.elFormItem || {}).elFormItemSize;
return this.size || _elFormItemSize || (this.$ELEMENT || {}).size;
},
tagSize: function tagSize() {
return ['small', 'mini'].indexOf(this.realSize) > -1 ? 'mini' : 'small';
},
isDisabled: function isDisabled() {
return this.disabled || (this.elForm || {}).disabled;
},
config: function config() {
var config = this.props || {};
var $attrs = this.$attrs;
Object.keys(MigratingProps).forEach(function (oldProp) {
var _MigratingProps$oldPr = MigratingProps[oldProp],
newProp = _MigratingProps$oldPr.newProp,
type = _MigratingProps$oldPr.type;
var oldValue = $attrs[oldProp] || $attrs[Object(util_["kebabCase"])(oldProp)];
if (Object(shared_["isDef"])(oldProp) && !Object(shared_["isDef"])(config[newProp])) {
if (type === Boolean && oldValue === '') {
oldValue = true;
}
config[newProp] = oldValue;
}
});
return config;
},
multiple: function multiple() {
return this.config.multiple;
},
leafOnly: function leafOnly() {
return !this.config.checkStrictly;
},
readonly: function readonly() {
return !this.filterable || this.multiple;
},
clearBtnVisible: function clearBtnVisible() {
if (!this.clearable || this.isDisabled || this.filtering || !this.inputHover) {
return false;
}
return this.multiple ? !!this.checkedNodes.filter(function (node) {
return !node.isDisabled;
}).length : !!this.presentText;
},
panel: function panel() {
return this.$refs.panel;
}
},
watch: {
disabled: function disabled() {
this.computePresentContent();
},
value: function value(val) {
if (!Object(util_["isEqual"])(val, this.checkedValue)) {
this.checkedValue = val;
this.computePresentContent();
}
},
checkedValue: function checkedValue(val) {
var value = this.value,
dropDownVisible = this.dropDownVisible;
var _config = this.config,
checkStrictly = _config.checkStrictly,
multiple = _config.multiple;
if (!Object(util_["isEqual"])(val, value) || Object(types_["isUndefined"])(value)) {
this.computePresentContent();
// hide dropdown when single mode
if (!multiple && !checkStrictly && dropDownVisible) {
this.toggleDropDownVisible(false);
}
this.$emit('input', val);
this.$emit('change', val);
this.dispatch('ElFormItem', 'el.form.change', [val]);
}
},
options: {
handler: function handler() {
this.$nextTick(this.computePresentContent);
},
deep: true
},
presentText: function presentText(val) {
this.inputValue = val;
},
presentTags: function presentTags(val, oldVal) {
if (this.multiple && (val.length || oldVal.length)) {
this.$nextTick(this.updateStyle);
}
},
filtering: function filtering(val) {
this.$nextTick(this.updatePopper);
}
},
mounted: function mounted() {
var _this = this;
var input = this.$refs.input;
if (input && input.$el) {
this.inputInitialHeight = input.$el.offsetHeight || InputSizeMap[this.realSize] || 40;
}
if (!Object(util_["isEmpty"])(this.value)) {
this.computePresentContent();
}
this.filterHandler = debounce_default()(this.debounce, function () {
var inputValue = _this.inputValue;
if (!inputValue) {
_this.filtering = false;
return;
}
var before = _this.beforeFilter(inputValue);
if (before && before.then) {
before.then(_this.getSuggestions);
} else if (before !== false) {
_this.getSuggestions();
} else {
_this.filtering = false;
}
});
Object(resize_event_["addResizeListener"])(this.$el, this.updateStyle);
},
beforeDestroy: function beforeDestroy() {
Object(resize_event_["removeResizeListener"])(this.$el, this.updateStyle);
},
methods: {
getMigratingConfig: function getMigratingConfig() {
return {
props: {
'expand-trigger': 'expand-trigger is removed, use `props.expandTrigger` instead.',
'change-on-select': 'change-on-select is removed, use `props.checkStrictly` instead.',
'hover-threshold': 'hover-threshold is removed, use `props.hoverThreshold` instead'
},
events: {
'active-item-change': 'active-item-change is renamed to expand-change'
}
};
},
toggleDropDownVisible: function toggleDropDownVisible(visible) {
var _this2 = this;
if (this.isDisabled) return;
var dropDownVisible = this.dropDownVisible;
var input = this.$refs.input;
visible = Object(shared_["isDef"])(visible) ? visible : !dropDownVisible;
if (visible !== dropDownVisible) {
this.dropDownVisible = visible;
if (visible) {
this.$nextTick(function () {
_this2.updatePopper();
_this2.panel.scrollIntoView();
});
}
input.$refs.input.setAttribute('aria-expanded', visible);
this.$emit('visible-change', visible);
}
},
handleDropdownLeave: function handleDropdownLeave() {
this.filtering = false;
this.inputValue = this.presentText;
},
handleKeyDown: function handleKeyDown(event) {
switch (event.keyCode) {
case KeyCode.enter:
this.toggleDropDownVisible();
break;
case KeyCode.down:
this.toggleDropDownVisible(true);
this.focusFirstNode();
event.preventDefault();
break;
case KeyCode.esc:
case KeyCode.tab:
this.toggleDropDownVisible(false);
break;
}
},
handleFocus: function handleFocus(e) {
this.$emit('focus', e);
},
handleBlur: function handleBlur(e) {
this.$emit('blur', e);
},
handleInput: function handleInput(val, event) {
!this.dropDownVisible && this.toggleDropDownVisible(true);
if (event && event.isComposing) return;
if (val) {
this.filterHandler();
} else {
this.filtering = false;
}
},
handleClear: function handleClear() {
this.presentText = '';
this.panel.clearCheckedNodes();
},
handleExpandChange: function handleExpandChange(value) {
this.$nextTick(this.updatePopper.bind(this));
this.$emit('expand-change', value);
this.$emit('active-item-change', value); // Deprecated
},
focusFirstNode: function focusFirstNode() {
var _this3 = this;
this.$nextTick(function () {
var filtering = _this3.filtering;
var _$refs = _this3.$refs,
popper = _$refs.popper,
suggestionPanel = _$refs.suggestionPanel;
var firstNode = null;
if (filtering && suggestionPanel) {
firstNode = suggestionPanel.$el.querySelector('.el-cascader__suggestion-item');
} else {
var firstMenu = popper.querySelector('.el-cascader-menu');
firstNode = firstMenu.querySelector('.el-cascader-node[tabindex="-1"]');
}
if (firstNode) {
firstNode.focus();
!filtering && firstNode.click();
}
});
},
computePresentContent: function computePresentContent() {
var _this4 = this;
// nextTick is required, because checked nodes may not change right now
this.$nextTick(function () {
if (_this4.config.multiple) {
_this4.computePresentTags();
_this4.presentText = _this4.presentTags.length ? ' ' : null;
} else {
_this4.computePresentText();
}
});
},
computePresentText: function computePresentText() {
var checkedValue = this.checkedValue,
config = this.config;
if (!Object(util_["isEmpty"])(checkedValue)) {
var node = this.panel.getNodeByValue(checkedValue);
if (node && (config.checkStrictly || node.isLeaf)) {
this.presentText = node.getText(this.showAllLevels, this.separator);
return;
}
}
this.presentText = null;
},
computePresentTags: function computePresentTags() {
var isDisabled = this.isDisabled,
leafOnly = this.leafOnly,
showAllLevels = this.showAllLevels,
separator = this.separator,
collapseTags = this.collapseTags;
var checkedNodes = this.getCheckedNodes(leafOnly);
var tags = [];
var genTag = function genTag(node) {
return {
node: node,
key: node.uid,
text: node.getText(showAllLevels, separator),
hitState: false,
closable: !isDisabled && !node.isDisabled
};
};
if (checkedNodes.length) {
var first = checkedNodes[0],
rest = checkedNodes.slice(1);
var restCount = rest.length;
tags.push(genTag(first));
if (restCount) {
if (collapseTags) {
tags.push({
key: -1,
text: '+ ' + restCount,
closable: false
});
} else {
rest.forEach(function (node) {
return tags.push(genTag(node));
});
}
}
}
this.checkedNodes = checkedNodes;
this.presentTags = tags;
},
getSuggestions: function getSuggestions() {
var _this5 = this;
var filterMethod = this.filterMethod;
if (!Object(types_["isFunction"])(filterMethod)) {
filterMethod = function filterMethod(node, keyword) {
return node.text.includes(keyword);
};
}
var suggestions = this.panel.getFlattedNodes(this.leafOnly).filter(function (node) {
if (node.isDisabled) return false;
node.text = node.getText(_this5.showAllLevels, _this5.separator) || '';
return filterMethod(node, _this5.inputValue);
});
if (this.multiple) {
this.presentTags.forEach(function (tag) {
tag.hitState = false;
});
} else {
suggestions.forEach(function (node) {
node.checked = Object(util_["isEqual"])(_this5.checkedValue, node.getValueByOption());
});
}
this.filtering = true;
this.suggestions = suggestions;
this.$nextTick(this.updatePopper);
},
handleSuggestionKeyDown: function handleSuggestionKeyDown(event) {
var keyCode = event.keyCode,
target = event.target;
switch (keyCode) {
case KeyCode.enter:
target.click();
break;
case KeyCode.up:
var prev = target.previousElementSibling;
prev && prev.focus();
break;
case KeyCode.down:
var next = target.nextElementSibling;
next && next.focus();
break;
case KeyCode.esc:
case KeyCode.tab:
this.toggleDropDownVisible(false);
break;
}
},
handleDelete: function handleDelete() {
var inputValue = this.inputValue,
pressDeleteCount = this.pressDeleteCount,
presentTags = this.presentTags;
var lastIndex = presentTags.length - 1;
var lastTag = presentTags[lastIndex];
this.pressDeleteCount = inputValue ? 0 : pressDeleteCount + 1;
if (!lastTag) return;
if (this.pressDeleteCount) {
if (lastTag.hitState) {
this.deleteTag(lastIndex);
} else {
lastTag.hitState = true;
}
}
},
handleSuggestionClick: function handleSuggestionClick(index) {
var multiple = this.multiple;
var targetNode = this.suggestions[index];
if (multiple) {
var checked = targetNode.checked;
targetNode.doCheck(!checked);
this.panel.calculateMultiCheckedValue();
} else {
this.checkedValue = targetNode.getValueByOption();
this.toggleDropDownVisible(false);
}
},
deleteTag: function deleteTag(index) {
var checkedValue = this.checkedValue;
var val = checkedValue[index];
this.checkedValue = checkedValue.filter(function (n, i) {
return i !== index;
});
this.$emit('remove-tag', val);
},
updateStyle: function updateStyle() {
var $el = this.$el,
inputInitialHeight = this.inputInitialHeight;
if (this.$isServer || !$el) return;
var suggestionPanel = this.$refs.suggestionPanel;
var inputInner = $el.querySelector('.el-input__inner');
if (!inputInner) return;
var tags = $el.querySelector('.el-cascader__tags');
var suggestionPanelEl = null;
if (suggestionPanel && (suggestionPanelEl = suggestionPanel.$el)) {
var suggestionList = suggestionPanelEl.querySelector('.el-cascader__suggestion-list');
suggestionList.style.minWidth = inputInner.offsetWidth + 'px';
}
if (tags) {
var offsetHeight = tags.offsetHeight;
var height = Math.max(offsetHeight + 6, inputInitialHeight) + 'px';
inputInner.style.height = height;
this.updatePopper();
}
},
/**
* public methods
*/
getCheckedNodes: function getCheckedNodes(leafOnly) {
return this.panel.getCheckedNodes(leafOnly);
}
}
});
// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=script&lang=js&
/* harmony default export */ var src_cascadervue_type_script_lang_js_ = (cascadervue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(0);
// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
src_cascadervue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "packages/cascader/src/cascader.vue"
/* harmony default export */ var cascader = (component.exports);
// CONCATENATED MODULE: ./packages/cascader/index.js
/* istanbul ignore next */
cascader.install = function (Vue) {
Vue.component(cascader.name, cascader);
};
/* harmony default export */ var packages_cascader = __webpack_exports__["default"] = (cascader);
/***/ })
/******/ });