UNPKG

ten-design-vue

Version:

ten-vue

790 lines (696 loc) 22.5 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 = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 6); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("../scripts/mixins/emitter"); /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = require("../popup"); /***/ }), /* 2 */ /***/ (function(module, exports) { module.exports = require("../input/input-select"); /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = require("../icon"); /***/ }), /* 4 */ /***/ (function(module, exports) { module.exports = require("../tree"); /***/ }), /* 5 */ /***/ (function(module, exports) { module.exports = require("../scripts/utils/helper"); /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __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!./src/components/tree-select/tree-select.vue?vue&type=template&id=15187701& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ten-popup',{attrs:{"trigger-type":"manual","direction":"bottom left","destroy":false,"show":_vm.popupShow,"width":_vm.popupWidthHandler,"popup-class":_vm._popupClass},on:{"change":_vm.onPopupChange},scopedSlots:_vm._u([{key:"trigger",fn:function(){return [_c('ten-input-select',{ref:"input",class:_vm._inputClass,attrs:{"multiple":_vm.multiple,"placeholder":_vm.placeholder,"is-filtering-mode":_vm.isFilteringMode,"disabled":_vm.disabled,"readonly":_vm._readonly,"value":_vm.dataValue,"size":_vm.size,"opened":_vm.popupShow,"get-input":_vm.getInput,"get-value-key":function (v) { return _vm.getKey(v); },"get-value-text":function (v) { return _vm.getText(v); },"clearable":_vm.clearable},on:{"tag-delete":_vm.onTagDelete,"text":_vm.onFilter,"click":_vm.onTriggerClick,"focus":_vm.onInputFocus,"blur":_vm.onInputBlur,"clear":_vm.onClear},scopedSlots:_vm._u([{key:"suffixIcon",fn:function(){return [_c('ten-icon',{attrs:{"icon":"carret_down"},on:{"click":function($event){$event.stopPropagation();return _vm.onSuffixIconClick.apply(null, arguments)}}})]},proxy:true}])})]},proxy:true},{key:"default",fn:function(){return [_c('div',{staticClass:"ten-tree-select__tree"},[_c('ten-tree',_vm._b({ref:"tree",attrs:{"close-siblings":true,"data":_vm.data,"selected":_vm.multiple ? _vm.dataValue : _vm.dataValue[0],"selected-mode":_vm.valueMode,"expanded":_vm.expanded,"selected-type":"data","selectable":"","multiple":_vm.multiple,"node-key":_vm.nodeKey,"node-text":_vm.nodeText,"draggable":false},on:{"update:expanded":[function($event){_vm.expanded=$event},_vm.onExpandedChange],"selectedChange":_vm.onSelectedChange,"click":_vm.onPopupClick}},'ten-tree',_vm.$attrs,false))],1),(!_vm.loading && !_vm.data.length)?_vm._t("emptyTip",function(){return [_c('div',{staticClass:"ten-tree-select__empty"},[_vm._v(_vm._s(_vm.emptyTip))])]}):_vm._e()]},proxy:true}],null,true)})} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/tree-select/tree-select.vue?vue&type=template&id=15187701& // EXTERNAL MODULE: external "../scripts/mixins/emitter" var emitter_ = __webpack_require__(0); var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_); // EXTERNAL MODULE: external "../popup" var external_popup_ = __webpack_require__(1); var external_popup_default = /*#__PURE__*/__webpack_require__.n(external_popup_); // EXTERNAL MODULE: external "../input/input-select" var input_select_ = __webpack_require__(2); var input_select_default = /*#__PURE__*/__webpack_require__.n(input_select_); // EXTERNAL MODULE: external "../icon" var external_icon_ = __webpack_require__(3); var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_); // EXTERNAL MODULE: external "../tree" var external_tree_ = __webpack_require__(4); var external_tree_default = /*#__PURE__*/__webpack_require__.n(external_tree_); // EXTERNAL MODULE: external "../scripts/utils/helper" var helper_ = __webpack_require__(5); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--1!./node_modules/vue-loader/lib??vue-loader-options!./src/components/tree-select/tree-select.vue?vue&type=script&lang=js& function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var tree_selectvue_type_script_lang_js_ = ({ name: 'TenTreeSelect', components: { TenInputSelect: input_select_default.a, TenPopup: external_popup_default.a, TenIcon: external_icon_default.a, TenTree: external_tree_default.a }, mixins: [emitter_default.a], inject: { formItem: { from: 'tenFormItem', default: null } }, provide: function provide() { return { tenFormItem: undefined }; }, props: { /** * v-model 选择器的当前值,对应事件 change */ value: [Number, String, Object, Array], /** * 选择器的默认值 */ defalutValue: [Number, String, Object, Array], /** * value 可以是 key 或者是对象的形式 * @member key | data */ valueType: String, /** * valueMode 同 tree selectedMode * @member all | onlyLeaf | parentFirst */ valueMode: { type: String, default: 'all' }, /** * 单选模式,是否可以清空 */ clearable: Boolean, /** * 输入提示 */ placeholder: { type: String, default: '请选择' }, /** * 大小 * @defaultValue default * @member default|small */ size: { type: String, default: 'default' }, /** * 禁用 */ disabled: Boolean, /** * 只读 */ readonly: Boolean, /** * data 树形数据 */ data: { type: Array, default: function _default() { return []; } }, /** * @ignore * todo: test * 设置为 true 则根据 nodeText 的值自动筛选 * 设置为 false 不作过滤操作 * 设置为函数,函数接受 nodeData 作为参数,函数返回 true or false 确定是否过滤该选项 */ filterNode: { type: [Boolean, Function], default: false }, multiple: Boolean, /** * 节点 key(id) 在 nodeData 中对应的键名 */ nodeKey: { type: String, default: 'key' }, /** * 节点文本在 nodeData 中对应的键名 */ nodeText: { type: String, default: 'text' }, /** * 节点 children 在 nodeData 中对应的键名 */ nodeChildren: { type: String, default: 'children' }, /** * 是否加载中,异步获取选项时适用 */ loading: { type: Boolean, default: false }, /** * 结果为空时提示文字,支持同名slot */ emptyTip: { type: String, default: '暂无数据' } }, data: function data() { return { popupShow: false, filterValue: '', dataValue: undefined, expanded: [] }; }, computed: { _inputClass: function _inputClass() { return ['ten-tree', 'ten-select-input', { 'ten-select-input--popupshow': this.popupShow }]; }, _popupClass: function _popupClass() { return ['ten-tree-select__popup', { 'ten-tree-select__popup--loading': this.loading }]; }, _readonly: function _readonly() { return this.readonly || !(this.isFilteringMode && this.popupShow); }, isFilteringMode: function isFilteringMode() { return Boolean(!!this.filterOption || this.$listeners.filter); }, // 筛选的时候,tree 接受的 data 并不是全部的 data,所以需要保存一份全量的 map _dataKeyMap: function _dataKeyMap() { var _this = this; var keyMap = {}; this.walkData(this.data, function (node) { var key = _this.getKey(node); keyMap[key] = node; }); if (this.valueType === 'data' && this.dataValue) { var valueData = this.multiple ? this.dataValue : [this.dataValue]; valueData.forEach(function (node) { var key = _this.getKey(node); keyMap[key] = node; }); } return keyMap; }, _filteredData: function _filteredData() { return this.isFilteringMode ? this.filterData(this.data) : this.data; } }, watch: { value: { handler: function handler(v) { var _this2 = this; this.dataValue = this.transform(v); this.expanded = [].concat(_toConsumableArray(this.expanded), _toConsumableArray(this.dataValue.map(function (data) { return _this2.getKey(data); }))); }, immediate: true }, data: function data(v) { this.filteredData = v; this.dataValue = this.transform(this.value); } }, created: function created() { this.disableEmit = false; }, methods: { transform: function transform(v) { var _this3 = this; var dataValue = v; if (!this.multiple || this.multiple && !Array.isArray(dataValue)) { dataValue = !Object(helper_["isEmpty"])(v) ? [dataValue] : []; } if (this.valueType !== 'data') { dataValue = dataValue.map(function (key) { return _this3._dataKeyMap[key] || ''; }).filter(function (v) { return v; }); } return dataValue; }, reverse: function reverse(v) { var _this4 = this; if (this.valueType === 'data') { return this.multiple ? v : v[0]; } var dataValue = v; dataValue = dataValue.map(function (item) { return _this4.getKey(item); }); return this.multiple ? dataValue : dataValue[0]; }, getKey: function getKey(nodeData) { return nodeData[this.nodeKey]; }, getText: function getText(nodeData) { return nodeData[this.nodeText]; }, getChildren: function getChildren(nodeData) { return nodeData[this.nodeChildren]; }, walkData: function walkData(data, fn) { var _this5 = this; if (Array.isArray(data)) { data.forEach(function (item) { return _this5.walkData(item, fn); }); } else { fn(data); var children = this.getChildren(data); if (children) { this.walkData(children, fn); } } }, getDataByKey: function getDataByKey(key) { return this._dataKeyMap[key]; }, trigger: function trigger() { this.focus(); setTimeout(this.onTriggerClick); }, focus: function focus() { var _this6 = this; this.disableEmit = true; setTimeout(function () { _this6.disableEmit = false; }, 10); this.refInput && this.refInput.focus(); }, blur: function blur() { this.refInput && this.refInput.blur(); this.hidePopup(); }, updateValue: function updateValue(unreversedValue) { var _this7 = this; var reversedValue = this.reverse(unreversedValue); /** * value 值改变事件 * * @event change * @param value */ this.$emit('change', reversedValue); this.$nextTick(function () { _this7.formItem && _this7.formItem.$emit('form.change'); }); }, onPopupClick: function onPopupClick() { this.focus(true); }, onSelectedChange: function onSelectedChange(selected) { this.updateValue(this.multiple ? selected : [selected]); if (this.multiple) { this.focus(true); this.filterValue = ''; } else { this.hidePopup(); } }, onTagDelete: function onTagDelete(tagToDelete, afterDeleteTags) { var value = afterDeleteTags; this.focus(); this.updateValue(value); }, onExpandedChange: function onExpandedChange() { this.focus(true); }, getInput: function getInput(el) { this.refInput = el; }, onTriggerClick: function onTriggerClick() { if (this.readonly || this.disabled || this.isFilteringMode && this.popupShow) { return; } this.popupShow = !this.popupShow; }, onSuffixIconClick: function onSuffixIconClick() { if (this.readonly || this.disabled) return; this.popupShow = !this.popupShow; }, onPopupChange: function onPopupChange() { this.hidePopup(); }, onInputFocus: function onInputFocus(e) { if (!this.disableEmit) { /** * 聚焦事件 * * @event focus * @param {Object} e */ this.$emit('focus', e); } }, onInputBlur: function onInputBlur(e) { /** * 失焦事件 * * @event blur * @param {Object} e */ this.$emit('blur', e); this.dispatch('ten-form-item', 'form.blur', this.curValue); this.hidePopup(); }, onClear: function onClear() { this.updateValue([]); }, hidePopup: function hidePopup() { this.popupShow = false; this.filterValue = ''; }, popupWidthHandler: function popupWidthHandler(input) { return input.offsetWidth; }, onFilter: function onFilter(text) { this.filterValue = text.trim(); /** * @ignore * 正在输入筛选值 */ this.$emit('filter', text); }, getFilterData: function getFilterData(node, fn) { var _this8 = this; if (Array.isArray(node)) { return node.filter(function (item) { return _this8.getFilterData(item, fn); }); } return fn(node); }, filterData: function filterData(data) { var _this9 = this; if (!this.filterValue || !this.filterNode) return data; if (typeof this.filterNode === 'function') { return this.getFilterData(this.data, function (node) { return _this9.filterNode(_this9.filterValue, node); }); } return this.getFilterData(function (node) { var text = _this9.getText(node); return text.indexOf(text) > -1; }); } } }); // CONCATENATED MODULE: ./src/components/tree-select/tree-select.vue?vue&type=script&lang=js& /* harmony default export */ var tree_select_tree_selectvue_type_script_lang_js_ = (tree_selectvue_type_script_lang_js_); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js /* 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, (options.functional ? this.parent : 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 functional 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 } } // CONCATENATED MODULE: ./src/components/tree-select/tree-select.vue /* normalize component */ var component = normalizeComponent( tree_select_tree_selectvue_type_script_lang_js_, render, staticRenderFns, false, null, null, null ) /* harmony default export */ var tree_select = __webpack_exports__["default"] = (component.exports); /***/ }) /******/ ]);