UNPKG

vc-table

Version:

table component based on vue.js & bootstrap

1,414 lines (1,244 loc) 49.4 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["vcTable"] = factory(); else root["vcTable"] = factory(); })(this, function() { return /******/ (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; /******/ /******/ // identity function for calling harmory imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmory exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ 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 = "/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 43); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(2)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 2 */ /***/ function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }, /* 3 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, /* 4 */ /***/ function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /* 5 */, /* 6 */ /***/ function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }, /* 7 */ /***/ function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(27) , defined = __webpack_require__(6); module.exports = function(it){ return IObject(defined(it)); }; /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(11) module.exports = __webpack_require__(42) if (module.exports.__esModule) module.exports = module.exports.default ;(typeof module.exports === "function" ? module.exports.options : module.exports).template = __webpack_require__(14) if (false) { (function () { var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue")) if (!hotAPI.compatible) return var id = "-!babel!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=script&index=0!./Table.vue" hotAPI.createRecord(id, module.exports) module.hot.accept(["-!babel!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=script&index=0!./Table.vue","-!vue-html-loader!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=template&index=0!./Table.vue"], function () { var newOptions = require("-!babel!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=script&index=0!./Table.vue") if (newOptions && newOptions.__esModule) newOptions = newOptions.default var newTemplate = require("-!vue-html-loader!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=template&index=0!./Table.vue") hotAPI.update(id, newOptions, newTemplate) }) })() } /***/ }, /* 10 */ /***/ function(module, exports) { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ var stylesInDom = {}, memoize = function(fn) { var memo; return function () { if (typeof memo === "undefined") memo = fn.apply(this, arguments); return memo; }; }, isOldIE = memoize(function() { return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase()); }), getHeadElement = memoize(function () { return document.head || document.getElementsByTagName("head")[0]; }), singletonElement = null, singletonCounter = 0, styleElementsInsertedAtTop = []; module.exports = function(list, options) { if(typeof DEBUG !== "undefined" && DEBUG) { if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); } options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> // tags it will allow on a page if (typeof options.singleton === "undefined") options.singleton = isOldIE(); // By default, add <style> tags to the bottom of <head>. if (typeof options.insertAt === "undefined") options.insertAt = "bottom"; var styles = listToStyles(list); addStylesToDom(styles, options); return function update(newList) { var mayRemove = []; for(var i = 0; i < styles.length; i++) { var item = styles[i]; var domStyle = stylesInDom[item.id]; domStyle.refs--; mayRemove.push(domStyle); } if(newList) { var newStyles = listToStyles(newList); addStylesToDom(newStyles, options); } for(var i = 0; i < mayRemove.length; i++) { var domStyle = mayRemove[i]; if(domStyle.refs === 0) { for(var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](); delete stylesInDom[domStyle.id]; } } }; } function addStylesToDom(styles, options) { for(var i = 0; i < styles.length; i++) { var item = styles[i]; var domStyle = stylesInDom[item.id]; if(domStyle) { domStyle.refs++; for(var j = 0; j < domStyle.parts.length; j++) { domStyle.parts[j](item.parts[j]); } for(; j < item.parts.length; j++) { domStyle.parts.push(addStyle(item.parts[j], options)); } } else { var parts = []; for(var j = 0; j < item.parts.length; j++) { parts.push(addStyle(item.parts[j], options)); } stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts}; } } } function listToStyles(list) { var styles = []; var newStyles = {}; for(var i = 0; i < list.length; i++) { var item = list[i]; var id = item[0]; var css = item[1]; var media = item[2]; var sourceMap = item[3]; var part = {css: css, media: media, sourceMap: sourceMap}; if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]}); else newStyles[id].parts.push(part); } return styles; } function insertStyleElement(options, styleElement) { var head = getHeadElement(); var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1]; if (options.insertAt === "top") { if(!lastStyleElementInsertedAtTop) { head.insertBefore(styleElement, head.firstChild); } else if(lastStyleElementInsertedAtTop.nextSibling) { head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling); } else { head.appendChild(styleElement); } styleElementsInsertedAtTop.push(styleElement); } else if (options.insertAt === "bottom") { head.appendChild(styleElement); } else { throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'."); } } function removeStyleElement(styleElement) { styleElement.parentNode.removeChild(styleElement); var idx = styleElementsInsertedAtTop.indexOf(styleElement); if(idx >= 0) { styleElementsInsertedAtTop.splice(idx, 1); } } function createStyleElement(options) { var styleElement = document.createElement("style"); styleElement.type = "text/css"; insertStyleElement(options, styleElement); return styleElement; } function createLinkElement(options) { var linkElement = document.createElement("link"); linkElement.rel = "stylesheet"; insertStyleElement(options, linkElement); return linkElement; } function addStyle(obj, options) { var styleElement, update, remove; if (options.singleton) { var styleIndex = singletonCounter++; styleElement = singletonElement || (singletonElement = createStyleElement(options)); update = applyToSingletonTag.bind(null, styleElement, styleIndex, false); remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true); } else if(obj.sourceMap && typeof URL === "function" && typeof URL.createObjectURL === "function" && typeof URL.revokeObjectURL === "function" && typeof Blob === "function" && typeof btoa === "function") { styleElement = createLinkElement(options); update = updateLink.bind(null, styleElement); remove = function() { removeStyleElement(styleElement); if(styleElement.href) URL.revokeObjectURL(styleElement.href); }; } else { styleElement = createStyleElement(options); update = applyToTag.bind(null, styleElement); remove = function() { removeStyleElement(styleElement); }; } update(obj); return function updateStyle(newObj) { if(newObj) { if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) return; update(obj = newObj); } else { remove(); } }; } var replaceText = (function () { var textStore = []; return function (index, replacement) { textStore[index] = replacement; return textStore.filter(Boolean).join('\n'); }; })(); function applyToSingletonTag(styleElement, index, remove, obj) { var css = remove ? "" : obj.css; if (styleElement.styleSheet) { styleElement.styleSheet.cssText = replaceText(index, css); } else { var cssNode = document.createTextNode(css); var childNodes = styleElement.childNodes; if (childNodes[index]) styleElement.removeChild(childNodes[index]); if (childNodes.length) { styleElement.insertBefore(cssNode, childNodes[index]); } else { styleElement.appendChild(cssNode); } } } function applyToTag(styleElement, obj) { var css = obj.css; var media = obj.media; if(media) { styleElement.setAttribute("media", media) } if(styleElement.styleSheet) { styleElement.styleSheet.cssText = css; } else { while(styleElement.firstChild) { styleElement.removeChild(styleElement.firstChild); } styleElement.appendChild(document.createTextNode(css)); } } function updateLink(linkElement, obj) { var css = obj.css; var sourceMap = obj.sourceMap; if(sourceMap) { // http://stackoverflow.com/a/26603875 css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"; } var blob = new Blob([css], { type: "text/css" }); var oldSrc = linkElement.href; linkElement.href = URL.createObjectURL(blob); if(oldSrc) URL.revokeObjectURL(oldSrc); } /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a <style> tag // load the styles var content = __webpack_require__(12); if(typeof content === 'string') content = [[module.i, content, '']]; // add the styles to the DOM var update = __webpack_require__(10)(content, {}); if(content.locals) module.exports = content.locals; // Hot Module Replacement if(false) { // When the styles change, update the <style> tags if(!content.locals) { module.hot.accept("!!./../../node_modules/.0.21.0@css-loader/index.js!./../../node_modules/.7.1.7@vue-loader/lib/style-rewriter.js?id=_v-274ac388&file=Table.vue!./../../node_modules/.2.2.3@less-loader/index.js!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=style&index=0!./Table.vue", function() { var newContent = require("!!./../../node_modules/.0.21.0@css-loader/index.js!./../../node_modules/.7.1.7@vue-loader/lib/style-rewriter.js?id=_v-274ac388&file=Table.vue!./../../node_modules/.2.2.3@less-loader/index.js!./../../node_modules/.7.1.7@vue-loader/lib/selector.js?type=style&index=0!./Table.vue"); if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; update(newContent); }); } // When the module is disposed, remove the <style> tags module.hot.dispose(function() { update(); }); } /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(13)(); // imports // module exports.push([module.i, ".vc-table-container {\n position: relative;\n}\n.vc-table-container .search-area,\n.vc-table-container .export-area {\n display: inline-block;\n margin-bottom: 10px;\n z-index: 2;\n position: relative;\n}\n.vc-table-container .search-area .input-box {\n display: inline-block;\n position: relative;\n}\n.vc-table-container .search-area .input-box:hover .clear-it {\n visibility: visible;\n}\n.vc-table-container .search-area .input-box .clear-it {\n visibility: hidden;\n position: absolute;\n top: 50%;\n right: 6px;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n opacity: .3;\n}\n.vc-table-container .vc-table-title {\n position: absolute;\n left: 50%;\n width: 100%;\n -webkit-transform: translate(-50%, 0);\n transform: translate(-50%, 0);\n height: 30px;\n line-height: 30px;\n padding: 0 250px;\n}\n.vc-table-container .vc-table-title.title-only {\n top: -40px;\n padding: 0;\n}\n.vc-table-container .vc-table-title.title-align-left {\n text-align: left;\n}\n.vc-table-container .vc-table-title.title-align-center {\n text-align: center;\n}\n.vc-table-container .vc-table-title.title-align-right {\n text-align: right;\n}\n.vc-table-container .vc-table-filter {\n margin-left: 5px;\n height: 30px;\n padding: 4px 8px;\n -wekit-box-shadow: none;\n box-shadow: none;\n font-size: 14px;\n line-height: 1.428571429;\n color: #555555;\n vertical-align: middle;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n.vc-table-container .vc-table-filter:focus {\n border-color: #46c3c1;\n box-shadow: inset 0 1px 1px rgba(102, 175, 233, 0.1), 0 0 5px rgba(102, 175, 233, 0.3);\n}\ntable.vc-table {\n border-radius: 3px;\n text-align: center;\n border: 1px solid #ddd;\n}\ntable.vc-table.title-only {\n margin-top: 40px;\n}\ntable.vc-table.vc-table-fixed {\n table-layout: fixed;\n}\ntable.vc-table th {\n cursor: pointer;\n text-align: center;\n /* override bootstrap */\n position: relative;\n border-bottom: none;\n}\ntable.vc-table th.hide {\n display: none;\n}\ntable.vc-table tr:hover {\n cursor: pointer;\n}\ntable.vc-table td {\n padding: 4px;\n position: relative;\n}\ntable.vc-table td span.top1,\ntable.vc-table td span.top2,\ntable.vc-table td span.top3 {\n background-color: #F37070;\n border-radius: 4px;\n padding: 3px 12px;\n color: #fff;\n}\ntable.vc-table td span.topN {\n /* 4位及以后 */\n background-color: #e6e2e2;\n border-radius: 4px;\n padding: 3px 12px;\n}\ntable.vc-table th.active {\n background-color: inherit;\n}\ntable.vc-table th.active .arrow {\n /* 激活的排序标志 */\n opacity: 1;\n border-bottom-color: #28d63d;\n border-top-color: #28d63d;\n}\ntable.vc-table .arrow {\n display: inline-block;\n vertical-align: middle;\n width: 0;\n height: 0;\n margin-left: 5px;\n opacity: 0.66;\n}\ntable.vc-table .arrow.asc {\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-bottom: 4px solid #666;\n}\ntable.vc-table .arrow.dsc {\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 4px solid #666;\n}\n/* filterBy渐隐效果 */\n.staggered-transition {\n -webkit-transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);\n transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);\n overflow: hidden;\n margin: 0;\n height: 20px;\n}\n.staggered-enter,\n.staggered-leave {\n opacity: 0;\n height: 0;\n}\n/* 暂未实现 applied during enter/leave transition */\n/* .staggered-enter-active, .staggered-leave-active { */\n/* transition: opacity .5s ease; */\n/* } */\n/* v-for orderBy 自动动画 applied during moving transition */\n.staggered-move {\n -webkit-transition: -webkit-transform 0.8s cubic-bezier(0.55, 0, 0.1, 1);\n transition: -webkit-transform 0.8s cubic-bezier(0.55, 0, 0.1, 1);\n transition: transform 0.8s cubic-bezier(0.55, 0, 0.1, 1);\n transition: transform 0.8s cubic-bezier(0.55, 0, 0.1, 1), -webkit-transform 0.8s cubic-bezier(0.55, 0, 0.1, 1);\n}\n.vc-fade-transition {\n display: inline-block;\n}\n.vc-fade-enter {\n -webkit-animation: fadeinT .5s;\n animation: fadeinT .5s;\n}\n.vc-fade-leave {\n -webkit-animation: fadeoutT .5s;\n animation: fadeoutT .5s;\n}\n/* 淡入-从上 */\n@-webkit-keyframes fadeinT {\n 0% {\n opacity: 0;\n -webkit-transform: translateY(-20px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: translateY(0);\n }\n}\n@keyframes fadeinT {\n 0% {\n opacity: 0;\n -webkit-transform: translateY(-20px);\n transform: translateY(-20px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n }\n}\n/* 淡出-向上 */\n@-webkit-keyframes fadeoutT {\n 0% {\n opacity: 1;\n -webkit-transform: translateY(0);\n }\n 100% {\n opacity: 0;\n -webkit-transform: translateY(-20px);\n }\n}\n@keyframes fadeoutT {\n 0% {\n opacity: 1;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n -webkit-transform: translateY(-20px);\n transform: translateY(-20px);\n }\n}\n", ""]); // exports /***/ }, /* 13 */ /***/ function(module, exports) { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader module.exports = function() { var list = []; // return the list of modules as css string list.toString = function toString() { var result = []; for(var i = 0; i < this.length; i++) { var item = this[i]; if(item[2]) { result.push("@media " + item[2] + "{" + item[1] + "}"); } else { result.push(item[1]); } } return result.join(""); }; // import a list of modules into the list list.i = function(modules, mediaQuery) { if(typeof modules === "string") modules = [[null, modules, ""]]; var alreadyImportedModules = {}; for(var i = 0; i < this.length; i++) { var id = this[i][0]; if(typeof id === "number") alreadyImportedModules[id] = true; } for(i = 0; i < modules.length; i++) { var item = modules[i]; // skip already imported module // this implementation is not 100% perfect for weird media query combinations // when a module is imported multiple times with different media queries. // I hope this will never occur (Hey this way we have smaller bundles) if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { if(mediaQuery && !item[2]) { item[2] = mediaQuery; } else if(mediaQuery) { item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; } list.push(item); } } }; return list; }; /***/ }, /* 14 */ /***/ function(module, exports) { module.exports = "<div class=\"vc-table-container\">\n <form class=\"search-area pull-left\" v-if=\"searchable\">\n <label>{{ filterLabel }}:</label>\n <div class=\"input-box\">\n <input type=\"text\" class=\"vc-table-filter\" name=\"query\" v-model=\"filterKey\" />\n <span class=\"clear-it glyphicon glyphicon-remove-circle\" @click=\"clearFilter\" aria-hidden=\"true\"></span>\n </div>\n </form>\n <div class=\"vc-table-title\" :class=\"{ 'title-only': !searchable && !exportable }\">{{ title }}</div>\n <div class=\"export-area pull-right\" v-if=\"exportable\">\n <button class=\"btn btn-info btn-sm pull-right\" @click=\"exportSortArgs\">导出数据</button>\n </div>\n <table class=\"vc-table table table-striped table-hover\" :class=\"{ 'vc-table-fixed': tableFixed, 'title-only': (!searchable && !exportable) }\">\n <thead v-if=\"showTableHeader\">\n <tr @click=\"handleClick\">\n <th v-for=\"key in columns\"\n @click=\"sortBy(key)\"\n :class=\"{ active: sortKey == key }\">\n {{ key | zhCN }}\n <span class=\"arrow\" \n v-if=\"sortable\"\n :class=\"sortOrders[key] > 0 ? 'asc' : 'dsc'\">\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- 制作表格的关键,行循环,再填每一行的列, 不可用内置index做排序!故数据源必须自带index -->\n <tr v-for=\"\n (index, entry) in data\n | filterBy filterKey \n | newOrderBy sortKey sortOrders[sortKey]\" \n transition=\"staggered\"\n stagger=\"5\"\n >\n <td v-for=\"key in columns\">\n <span>{{ entry[key] }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>"; /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(40); module.exports = __webpack_require__(0).Object.keys; /***/ }, /* 16 */ /***/ function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(4); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(8) , toLength = __webpack_require__(36) , toIndex = __webpack_require__(35); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }, /* 19 */ /***/ function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(16); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(4) , document = __webpack_require__(3).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; /***/ }, /* 22 */ /***/ function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(3) , core = __webpack_require__(0) , ctx = __webpack_require__(20) , hide = __webpack_require__(25) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }, /* 24 */ /***/ function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(28) , createDesc = __webpack_require__(32); module.exports = __webpack_require__(1) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }, /* 26 */ /***/ function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(1) && !__webpack_require__(2)(function(){ return Object.defineProperty(__webpack_require__(21)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(19); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { var anObject = __webpack_require__(17) , IE8_DOM_DEFINE = __webpack_require__(26) , toPrimitive = __webpack_require__(38) , dP = Object.defineProperty; exports.f = __webpack_require__(1) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }, /* 29 */ /***/ function(module, exports, __webpack_require__) { var has = __webpack_require__(24) , toIObject = __webpack_require__(8) , arrayIndexOf = __webpack_require__(18)(false) , IE_PROTO = __webpack_require__(33)('IE_PROTO'); module.exports = function(object, names){ var O = toIObject(object) , i = 0 , result = [] , key; for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); // Don't enum bug & hidden keys while(names.length > i)if(has(O, key = names[i++])){ ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(29) , enumBugKeys = __webpack_require__(22); module.exports = Object.keys || function keys(O){ return $keys(O, enumBugKeys); }; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(23) , core = __webpack_require__(0) , fails = __webpack_require__(2); module.exports = function(KEY, exec){ var fn = (core.Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); }; /***/ }, /* 32 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }, /* 33 */ /***/ function(module, exports, __webpack_require__) { var shared = __webpack_require__(34)('keys') , uid = __webpack_require__(39); module.exports = function(key){ return shared[key] || (shared[key] = uid(key)); }; /***/ }, /* 34 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(3) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(7) , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(7) , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(6); module.exports = function(it){ return Object(defined(it)); }; /***/ }, /* 38 */ /***/ function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(4); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }, /* 39 */ /***/ function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }, /* 40 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(37) , $keys = __webpack_require__(30); __webpack_require__(31)('keys', function(){ return function keys(it){ return $keys(toObject(it)); }; }); /***/ }, /* 41 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(15), __esModule: true }; /***/ }, /* 42 */ /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = __webpack_require__(41); var _keys2 = _interopRequireDefault(_keys); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // <template> // <div class="vc-table-container"> // <form class="search-area pull-left" v-if="searchable"> // <label>{{ filterLabel }}:</label> // <div class="input-box"> // <input type="text" class="vc-table-filter" name="query" v-model="filterKey" /> // <span class="clear-it glyphicon glyphicon-remove-circle" @click="clearFilter" aria-hidden="true"></span> // </div> // </form> // <div class="vc-table-title" :class="{ 'title-only': !searchable && !exportable }">{{ title }}</div> // <div class="export-area pull-right" v-if="exportable"> // <button class="btn btn-info btn-sm pull-right" @click="exportSortArgs">导出数据</button> // </div> // <table class="vc-table table table-striped table-hover" :class="{ 'vc-table-fixed': tableFixed, 'title-only': (!searchable && !exportable) }"> // <thead v-if="showTableHeader"> // <tr @click="handleClick"> // <th v-for="key in columns" // @click="sortBy(key)" // :class="{ active: sortKey == key }"> // {{ key | zhCN }} // <span class="arrow" // v-if="sortable" // :class="sortOrders[key] > 0 ? 'asc' : 'dsc'"> // </span> // </th> // </tr> // </thead> // <tbody> // <!-- 制作表格的关键,行循环,再填每一行的列, 不可用内置index做排序!故数据源必须自带index --> // <tr v-for=" // (index, entry) in data // | filterBy filterKey // | newOrderBy sortKey sortOrders[sortKey]" // transition="staggered" // stagger="5" // > // <td v-for="key in columns"> // <span>{{ entry[key] }}</span> // </td> // </tr> // </tbody> // </table> // </div> // </template> // <style lang="less"> // @table-bg: #fff; // @arrow-bg: #666; // @arrow-active-bg: #28d63d; // .vc-table-container { // position: relative; // .search-area, // .export-area { // display: inline-block; // margin-bottom: 10px; // z-index: 2; // position: relative; // } // .search-area { // .input-box { // display: inline-block; // position: relative; // &:hover .clear-it { // visibility: visible; // } // .clear-it { // visibility: hidden; // position: absolute; // top: 50%; // right: 6px; // -webkit-transform: translateY(-50%); // transform: translateY(-50%); // opacity: .3; // } // } // } // .vc-table-title { // position: absolute; // left: 50%; // width: 100%; // -webkit-transform: translate(-50%, 0); // transform: translate(-50%, 0); // height: 30px; // line-height: 30px; // padding: 0 250px; // &.title-only { // top: -@only-title-offset; // padding: 0; // } // &.title-align-left { // text-align: left; // } // &.title-align-center { // text-align: center; // } // &.title-align-right { // text-align: right; // } // } // // input // .vc-table-filter { // margin-left: 5px; // height: 30px; // padding: 4px 8px; // -wekit-box-shadow: none; // box-shadow: none; // font-size: 14px; // line-height: 1.428571429; // color: #555555; // vertical-align: middle; // background-color: #ffffff; // background-image: none; // border: 1px solid #cccccc; // border-radius: 4px; // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); // -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; // transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; // } // .vc-table-filter:focus { // border-color: #46c3c1; // -webkit-box-shadow: inset 0 1px 1px rgba(102, 175, 233, 0.1), 0 0 5px rgba(102, 175, 233, 0.3); // box-shadow: inset 0 1px 1px rgba(102, 175, 233, 0.1), 0 0 5px rgba(102, 175, 233, 0.3); // } // } // @only-title-offset: 40px; // table.vc-table { // border-radius: 3px; // text-align: center; // border: 1px solid #ddd; // &.title-only { // margin-top: @only-title-offset; // } // &.vc-table-fixed { // table-layout: fixed; // } // th { // &.hide { // display: none; // } // cursor: pointer; // text-align: center; /* override bootstrap */ // position: relative; // border-bottom: none; // } // tr:hover { // cursor: pointer; // } // td { // // background-color: @table-bg; // padding: 4px; // position: relative; // // Rank排位label // span.top1, // span.top2, // span.top3 { // background-color: #F37070; // border-radius: 4px; // padding: 3px 12px; // color: #fff; // } // span.topN { /* 4位及以后 */ // background-color: #e6e2e2; // border-radius: 4px; // padding: 3px 12px; // } // } // th.active { // background-color: inherit; // } // th.active .arrow { /* 激活的排序标志 */ // opacity: 1; // border-bottom-color: @arrow-active-bg; // border-top-color: @arrow-active-bg; // } // .arrow { // display: inline-block; // vertical-align: middle; // width: 0; // height: 0; // margin-left: 5px; // opacity: 0.66; // } // .arrow.asc { // border-left: 4px solid transparent; // border-right: 4px solid transparent; // border-bottom: 4px solid @arrow-bg; // } // .arrow.dsc { // border-left: 4px solid transparent; // border-right: 4px solid transparent; // border-top: 4px solid @arrow-bg; // } // } // /* filterBy渐隐效果 */ // .staggered-transition { // transition: all .5s cubic-bezier(.55, 0, .1, 1); // overflow: hidden; // margin: 0; // height: 20px; // } // .staggered-enter, .staggered-leave { // opacity: 0; // height: 0; // } // /* 暂未实现 applied during enter/leave transition */ // /* .staggered-enter-active, .staggered-leave-active { */ // /* transition: opacity .5s ease; */ // /* } */ // /* v-for orderBy 自动动画 applied during moving transition */ // .staggered-move { // transition: transform .8s cubic-bezier(.55, 0, .1, 1); // } // .vc-fade-transition { // display: inline-block; // } // .vc-fade-enter { // animation: fadeinT .5s; // } // .vc-fade-leave { // animation: fadeoutT .5s; // } // @maxRange: 20px; // /* 淡入-从上 */ // @-webkit-keyframes fadeinT { // 0%{opacity:0;-webkit-transform:translateY(-@maxRange);} // 100%{opacity:1;-webkit-transform:translateY(0);} // } // @-moz-keyframes fadeinT { // 0%{opacity:0;-moz-transform:translateY(-@maxRange);} // 100%{opacity:1;-moz-transform:translateY(0);} // } // @-ms-keyframes fadeinT { // 0%{opacity:0;-ms-transform:translateY(-@maxRange);} // 100%{opacity:1;-ms-transform:translateY(0);} // } // @keyframes fadeinT { // 0%{opacity:0;transform:translateY(-@maxRange);} // 100%{opacity:1;transform:translateY(0);} // } // /* 淡出-向上 */ // @-webkit-keyframes fadeoutT{ // 0%{opacity:1;-webkit-transform:translateY(0);} // 100%{opacity:0;-webkit-transform:translateY(-@maxRange);} // } // @-moz-keyframes fadeoutT{ // 0%{opacity:1;-moz-transform:translateY(0);} // 100%{opacity:0;-moz-transform:translateY(-@maxRange);} // } // @-ms-keyframes fadeoutT{ // 0%{opacity:1;-ms-transform:translateY(0);} // 100%{opacity:0;-ms-transform:translateY(-@maxRange);} // } // @keyframes fadeoutT{ // 0%{opacity:1;transform:translateY(0);} // 100%{opacity:0;transform:translateY(-@maxRange);} // } // </style> // <script> var COMPONENT_NS = 'TABLE'; exports.default = { name: 'vc-table', props: { name: { type: String, default: 'vc-table' + Date.now() }, tpl: String, // 放出tpl属性,让用户定制组件template,支持一个字符串来代表字符串模板或模板dom标示 data: { type: Array }, dataParser: { // a callback to parse each entry[key] in template type: Function }, dataPlus: Object, // 高级定制: 外部可提供一个数据对象供模板使用(比如传入baseUrl) columns: Array, columnsMap: Object, // key => value对照映射,用于可能的中文filter title: String, // 表头 titleAlign: { type: String, default: 'center' }, tableFixed: { // table-layout: fixed的使用 type: Boolean, default: false }, searchable: { // 是否可搜索过滤 type: Boolean, default: false }, filterKey: String, filterLabel: { type: String, default: '筛选' }, sortable: { type: Boolean, default: false }, showTableHeader: { type: Boolean, default: true }, exportLabel: { type: String, default: '导出' }, exportable: { // 是否显示导出按钮(会dispatch排序参数等相关信息) type: Boolean, default: false } }, created: function created() { if (this.tpl) { this.$options.template = this.tpl; } }, data: function data() { var sortOrders = {}; this.columns.forEach(function (key) { sortOrders[key] = 1; }); return { // filterKey: '', sortKey: '', sortOrders: sortOrders }; }, filters: { // 局部filter newOrderBy: function newOrderBy(arr, key, sign) { sign = parseInt(sign); return arr.sort(function (item, nextItem) { var t1, t2; t1 = item[key] == null ? -Infinity : item[key]; t2 = nextItem[key] == null ? -Infinity : nextItem[key]; if (isNaN(t1) || isNaN(t2)) { if (t1 > t2) { return sign; } else { return -sign; } } return (Number(t1) - Number(t2)) * sign; }); }, round: function round(value, accuracy, keep) { if (typeof value !== 'number') value = +value; var fixed = value.toFixed(accuracy); return keep ? fixed : +fixed; }, zhCN: function zhCN(columnKey) { var map = this.columnsMap; var keys = (0, _keys2.default)(map); if (keys.length > 0) { for (var i = 0, len = keys.length; i < len; i++) { if (columnKey === keys[i]) { return map[columnKey]; console.log(map[columnKey]); } } } else { return columnKey; } } }, methods: { clearFilter: function clearFilter() { this.filterKey = ''; }, sortBy: function sortBy(key) { if (!this.sortable) return; this.sortKey = key; if (this.sortOrders[key] == null) { this.sortOrders[key] = -1; } else { this.sortOrders[key] = this.sortOrders[key] * -1; // toggle order } }, // 分发当前点击index handleClick: function handleClick() { var info = [].slice.call(arguments, 0); var msg = { action: 'click', data: info }; this.$dispatch(COMPONENT_NS, msg, name); }, // 分发当前排序参数 exportSortArgs: function exportSortArgs() { var msg = { action: 'exportSortInfo', data: { sortKey: this.sortKey, currentOrder: this.sortOrders[this.sortKey], order: this.sortOrders } }; this.$dispatch(COMPONENT_NS, msg, name); } }, events: { 'triggerSort': function triggerSort(key) { this.sortBy(key); var msg = { action: 'sortDone', data: { sortKey: this.sortKey, sortOrders: this.sortOrders } }; this.$dispatch('COMPONENT_NS', msg); } } }; // </script> /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { "use strict"; 'use strict'; var _Table = __webpack_require__(9); var _Table2 = _interopRequireDefault(_Table); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = _Table2.default; /***/ } /******/ ]) }); ; //# sourceMappingURL=build.js.map