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, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // 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 = 266); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file. // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. module.exports = function normalizeComponent ( rawScriptExports, compiledTemplate, functionalTemplate, injectStyles, scopeId, moduleIdentifier /* server only */ ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} // ES6 modules interop var type = typeof rawScriptExports.default if (type === 'object' || type === 'function') { esModule = rawScriptExports scriptExports = rawScriptExports.default } // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (compiledTemplate) { options.render = compiledTemplate.render options.staticRenderFns = compiledTemplate.staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 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 = injectStyles } if (hook) { var functional = options.functional var existing = functional ? options.render : options.beforeCreate if (!functional) { // inject component registration as beforeCreate hook options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } else { // 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 options.render = function renderWithStyleInjection (h, context) { hook.call(context) return existing(h, context) } } } return { esModule: esModule, exports: scriptExports, options: options } } /***/ }), /***/ 19: /***/ (function(module, exports) { module.exports = require("element-ui/lib/utils/resize-event"); /***/ }), /***/ 266: /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(267); /***/ }), /***/ 267: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _tabs = __webpack_require__(268); var _tabs2 = _interopRequireDefault(_tabs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* istanbul ignore next */ _tabs2.default.install = function (Vue) { Vue.component(_tabs2.default.name, _tabs2.default); }; exports.default = _tabs2.default; /***/ }), /***/ 268: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tabs_vue__ = __webpack_require__(269); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tabs_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tabs_vue__); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ var __vue_template__ = null /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tabs_vue___default.a, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 269: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _tabNav = __webpack_require__(270); var _tabNav2 = _interopRequireDefault(_tabNav); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { name: 'ElTabs', components: { TabNav: _tabNav2.default }, props: { type: String, activeName: String, closable: Boolean, addable: Boolean, value: {}, editable: Boolean, tabPosition: { type: String, default: 'top' } }, provide: function provide() { return { rootTabs: this }; }, data: function data() { return { currentName: this.value || this.activeName, panes: [] }; }, watch: { activeName: function activeName(value) { this.setCurrentName(value); }, value: function value(_value) { this.setCurrentName(_value); }, currentName: function currentName(value) { var _this = this; if (this.$refs.nav) { this.$nextTick(function (_) { _this.$refs.nav.scrollToActiveTab(); }); } } }, methods: { handleTabClick: function handleTabClick(tab, tabName, event) { if (tab.disabled) return; this.setCurrentName(tabName); this.$emit('tab-click', tab, event); }, handleTabRemove: function handleTabRemove(pane, ev) { if (pane.disabled) return; ev.stopPropagation(); this.$emit('edit', pane.name, 'remove'); this.$emit('tab-remove', pane.name); }, handleTabAdd: function handleTabAdd() { this.$emit('edit', null, 'add'); this.$emit('tab-add'); }, setCurrentName: function setCurrentName(value) { this.currentName = value; this.$emit('input', value); }, addPanes: function addPanes(item) { var index = this.$slots.default.filter(function (item) { return item.elm.nodeType === 1 && /\bel-tab-pane\b/.test(item.elm.className); }).indexOf(item.$vnode); this.panes.splice(index, 0, item); }, removePanes: function removePanes(item) { var panes = this.panes; var index = panes.indexOf(item); if (index > -1) { panes.splice(index, 1); } } }, render: function render(h) { var _ref; var type = this.type, handleTabClick = this.handleTabClick, handleTabRemove = this.handleTabRemove, handleTabAdd = this.handleTabAdd, currentName = this.currentName, panes = this.panes, editable = this.editable, addable = this.addable, tabPosition = this.tabPosition; var newButton = editable || addable ? h( 'span', { 'class': 'el-tabs__new-tab', on: { 'click': handleTabAdd, 'keydown': function keydown(ev) { if (ev.keyCode === 13) { handleTabAdd(); } } }, attrs: { tabindex: '0' } }, [h( 'i', { 'class': 'el-icon-plus' }, [] )] ) : null; var navData = { props: { currentName: currentName, onTabClick: handleTabClick, onTabRemove: handleTabRemove, editable: editable, type: type, panes: panes }, ref: 'nav' }; var header = h( 'div', { 'class': 'el-tabs__header' }, [newButton, h( 'tab-nav', navData, [] )] ); var panels = h( 'div', { 'class': 'el-tabs__content' }, [this.$slots.default] ); return h( 'div', { 'class': (_ref = { 'el-tabs': true, 'el-tabs--card': type === 'card' }, _ref['el-tabs--' + tabPosition] = true, _ref['el-tabs--border-card'] = type === 'border-card', _ref) }, [tabPosition !== 'bottom' ? [header, panels] : [panels, header]] ); }, created: function created() { if (!this.currentName) { this.setCurrentName('0'); } } }; /***/ }), /***/ 270: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_nav_vue__ = __webpack_require__(271); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_nav_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_nav_vue__); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ var __vue_template__ = null /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_nav_vue___default.a, __vue_template__, __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 271: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _tabBar = __webpack_require__(272); var _tabBar2 = _interopRequireDefault(_tabBar); var _resizeEvent = __webpack_require__(19); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function noop() {} var firstUpperCase = function firstUpperCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, function (L) { return L.toUpperCase(); }); }; exports.default = { name: 'TabNav', components: { TabBar: _tabBar2.default }, inject: ['rootTabs'], props: { panes: Array, currentName: String, editable: Boolean, onTabClick: { type: Function, default: noop }, onTabRemove: { type: Function, default: noop }, type: String }, data: function data() { return { scrollable: false, navOffset: 0, isFocus: false }; }, computed: { navStyle: function navStyle() { var dir = ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'X' : 'Y'; return { transform: 'translate' + dir + '(-' + this.navOffset + 'px)' }; }, sizeName: function sizeName() { return ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'width' : 'height'; } }, methods: { scrollPrev: function scrollPrev() { var containerSize = this.$refs.navScroll['offset' + firstUpperCase(this.sizeName)]; var currentOffset = this.navOffset; if (!currentOffset) return; var newOffset = currentOffset > containerSize ? currentOffset - containerSize : 0; this.navOffset = newOffset; }, scrollNext: function scrollNext() { var navSize = this.$refs.nav['offset' + firstUpperCase(this.sizeName)]; var containerSize = this.$refs.navScroll['offset' + firstUpperCase(this.sizeName)]; var currentOffset = this.navOffset; if (navSize - currentOffset <= containerSize) return; var newOffset = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize; this.navOffset = newOffset; }, scrollToActiveTab: function scrollToActiveTab() { if (!this.scrollable) return; var nav = this.$refs.nav; var activeTab = this.$el.querySelector('.is-active'); var navScroll = this.$refs.navScroll; var activeTabBounding = activeTab.getBoundingClientRect(); var navScrollBounding = navScroll.getBoundingClientRect(); var navBounding = nav.getBoundingClientRect(); var currentOffset = this.navOffset; var newOffset = currentOffset; if (activeTabBounding.left < navScrollBounding.left) { newOffset = currentOffset - (navScrollBounding.left - activeTabBounding.left); } if (activeTabBounding.right > navScrollBounding.right) { newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right; } if (navBounding.right < navScrollBounding.right) { newOffset = nav.offsetWidth - navScrollBounding.width; } this.navOffset = Math.max(newOffset, 0); }, update: function update() { if (!this.$refs.nav) return; var sizeName = this.sizeName; var navSize = this.$refs.nav['offset' + firstUpperCase(sizeName)]; var containerSize = this.$refs.navScroll['offset' + firstUpperCase(sizeName)]; var currentOffset = this.navOffset; if (containerSize < navSize) { var _currentOffset = this.navOffset; this.scrollable = this.scrollable || {}; this.scrollable.prev = _currentOffset; this.scrollable.next = _currentOffset + containerSize < navSize; if (navSize - _currentOffset < containerSize) { this.navOffset = navSize - containerSize; } } else { this.scrollable = false; if (currentOffset > 0) { this.navOffset = 0; } } }, changeTab: function changeTab(e) { var keyCode = e.keyCode; var nextIndex = void 0; var currentIndex = void 0, tabList = void 0; if ([37, 38, 39, 40].indexOf(keyCode) !== -1) { // 左右上下键更换tab tabList = e.currentTarget.querySelectorAll('[role=tab]'); currentIndex = Array.prototype.indexOf.call(tabList, e.target); } else { return; } if (keyCode === 37 || keyCode === 38) { // left if (currentIndex === 0) { // first nextIndex = tabList.length - 1; } else { nextIndex = currentIndex - 1; } } else { // right if (currentIndex < tabList.length - 1) { // not last nextIndex = currentIndex + 1; } else { nextIndex = 0; } } tabList[nextIndex].focus(); // 改变焦点元素 tabList[nextIndex].click(); // 选中下一个tab }, setFocus: function setFocus() { this.isFocus = true; }, removeFocus: function removeFocus() { this.isFocus = false; } }, updated: function updated() { this.update(); }, render: function render(h) { var _this = this; var type = this.type, panes = this.panes, editable = this.editable, onTabClick = this.onTabClick, onTabRemove = this.onTabRemove, navStyle = this.navStyle, scrollable = this.scrollable, scrollNext = this.scrollNext, scrollPrev = this.scrollPrev, changeTab = this.changeTab, setFocus = this.setFocus, removeFocus = this.removeFocus; var scrollBtn = scrollable ? [h( 'span', { 'class': ['el-tabs__nav-prev', scrollable.prev ? '' : 'is-disabled'], on: { 'click': scrollPrev } }, [h( 'i', { 'class': 'el-icon-arrow-left' }, [] )] ), h( 'span', { 'class': ['el-tabs__nav-next', scrollable.next ? '' : 'is-disabled'], on: { 'click': scrollNext } }, [h( 'i', { 'class': 'el-icon-arrow-right' }, [] )] )] : null; var tabs = this._l(panes, function (pane, index) { var tabName = pane.name || pane.index || index; var closable = pane.isClosable || editable; pane.index = '' + index; var btnClose = closable ? h( 'span', { 'class': 'el-icon-close', on: { 'click': function click(ev) { onTabRemove(pane, ev); } } }, [] ) : null; var tabLabelContent = pane.$slots.label || pane.label; var tabindex = pane.active ? 0 : -1; return h( 'div', { 'class': { 'el-tabs__item': true, 'is-active': pane.active, 'is-disabled': pane.disabled, 'is-closable': closable, 'is-focus': _this.isFocus }, attrs: { id: 'tab-' + tabName, 'aria-controls': 'pane-' + tabName, role: 'tab', 'aria-selected': pane.active, tabindex: tabindex }, ref: 'tabs', refInFor: true, on: { 'focus': function focus() { setFocus(); }, 'blur': function blur() { removeFocus(); }, 'click': function click(ev) { removeFocus();onTabClick(pane, tabName, ev); }, 'keydown': function keydown(ev) { if (closable && (ev.keyCode === 46 || ev.keyCode === 8)) { onTabRemove(pane, ev); } } } }, [tabLabelContent, btnClose] ); }); return h( 'div', { 'class': ['el-tabs__nav-wrap', scrollable ? 'is-scrollable' : ''] }, [scrollBtn, h( 'div', { 'class': ['el-tabs__nav-scroll'], ref: 'navScroll' }, [h( 'div', { 'class': 'el-tabs__nav', ref: 'nav', style: navStyle, attrs: { role: 'tablist' }, on: { 'keydown': changeTab } }, [!type ? h( 'tab-bar', { attrs: { tabs: panes } }, [] ) : null, tabs] )] )] ); }, mounted: function mounted() { (0, _resizeEvent.addResizeListener)(this.$el, this.update); }, beforeDestroy: function beforeDestroy() { if (this.$el && this.update) (0, _resizeEvent.removeResizeListener)(this.$el, this.update); } }; /***/ }), /***/ 272: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_bar_vue__ = __webpack_require__(273); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_bar_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_bar_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9a42dc98_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tab_bar_vue__ = __webpack_require__(274); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tab_bar_vue___default.a, __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9a42dc98_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tab_bar_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 273: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; // // // exports.default = { name: 'TabBar', props: { tabs: Array }, inject: ['rootTabs'], computed: { barStyle: { cache: false, get: function get() { var _this = this; if (!this.$parent.$refs.tabs) return {}; var style = {}; var offset = 0; var tabSize = 0; var sizeName = ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'width' : 'height'; var sizeDir = sizeName === 'width' ? 'x' : 'y'; var firstUpperCase = function firstUpperCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, function (L) { return L.toUpperCase(); }); }; this.tabs.every(function (tab, index) { var $el = _this.$parent.$refs.tabs[index]; if (!$el) { return false; } if (!tab.active) { offset += $el['client' + firstUpperCase(sizeName)]; return true; } else { tabSize = $el['client' + firstUpperCase(sizeName)]; if (sizeName === 'width') { tabSize -= index === 0 || index === _this.tabs.length - 1 ? 20 : 40; } return false; } }); if (sizeName === 'width' && offset !== 0) { offset += 20; } var transform = 'translate' + firstUpperCase(sizeDir) + '(' + offset + 'px)'; style[sizeName] = tabSize + 'px'; style.transform = transform; style.msTransform = transform; style.webkitTransform = transform; return style; } } } }; /***/ }), /***/ 274: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"el-tabs__active-bar",style:(_vm.barStyle)})} var staticRenderFns = [] var esExports = { render: render, staticRenderFns: staticRenderFns } /* harmony default export */ __webpack_exports__["a"] = (esExports); /***/ }) /******/ });