From 067a2910d45c0dd7f4eec4043aeb23c9e631150c Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Tue, 16 Apr 2019 13:28:57 +0800
Subject: [PATCH 1/5] Revert "perf: add functional to template"

This reverts commit 9ecec0970f4e3462e377af5ffcd5bb25e69ec24c.
---
 src/views/example/components/Warning.vue | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/views/example/components/Warning.vue b/src/views/example/components/Warning.vue
index 4073f984..d24fe291 100644
--- a/src/views/example/components/Warning.vue
+++ b/src/views/example/components/Warning.vue
@@ -1,4 +1,4 @@
-<template functional>
+<template>
   <aside>
     {{ $t('example.warning') }}
     <a
@@ -7,3 +7,4 @@
     >Document</a>
   </aside>
 </template>
+

From 4ee334ad833abe52bd57ca08c12b5848a5a173ed Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Tue, 16 Apr 2019 13:51:14 +0800
Subject: [PATCH 2/5] perf[Breadcrumb]: set noredirect => noRedirect

---
 mock/role/routes.js                   | 12 ++++++------
 src/components/Breadcrumb/index.vue   |  3 ++-
 src/components/HeaderSearch/index.vue |  2 +-
 src/router/index.js                   |  7 ++-----
 src/router/modules/charts.js          |  2 +-
 src/router/modules/components.js      |  2 +-
 6 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/mock/role/routes.js b/mock/role/routes.js
index 62a09d01..5bb6c741 100644
--- a/mock/role/routes.js
+++ b/mock/role/routes.js
@@ -129,7 +129,7 @@ export const asyncRoutes = [
   {
     path: '/components',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     name: 'ComponentDemo',
     meta: {
       title: 'components',
@@ -225,7 +225,7 @@ export const asyncRoutes = [
   {
     path: '/charts',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     name: 'Charts',
     meta: {
       title: 'charts',
@@ -361,7 +361,7 @@ export const asyncRoutes = [
   {
     path: '/error',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     name: 'ErrorPages',
     meta: {
       title: 'errorPages',
@@ -386,7 +386,7 @@ export const asyncRoutes = [
   {
     path: '/error-log',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     children: [
       {
         path: 'log',
@@ -472,7 +472,7 @@ export const asyncRoutes = [
   {
     path: '/theme',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     children: [
       {
         path: 'index',
@@ -486,7 +486,7 @@ export const asyncRoutes = [
   {
     path: '/clipboard',
     component: 'layout/Layout',
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     children: [
       {
         path: 'index',
diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
index ff93ff45..1ea13031 100644
--- a/src/components/Breadcrumb/index.vue
+++ b/src/components/Breadcrumb/index.vue
@@ -2,7 +2,7 @@
   <el-breadcrumb class="app-breadcrumb" separator="/">
     <transition-group name="breadcrumb">
       <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
-        <span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{
+        <span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{
           generateTitle(item.meta.title) }}</span>
         <a v-else @click.prevent="handleLink(item)">{{ generateTitle(item.meta.title) }}</a>
       </el-breadcrumb-item>
@@ -31,6 +31,7 @@ export default {
   methods: {
     generateTitle,
     getBreadcrumb() {
+      // only show routes with name
       let matched = this.$route.matched.filter(item => item.name)
 
       const first = matched[0]
diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue
index 6668ad5c..90eea067 100644
--- a/src/components/HeaderSearch/index.vue
+++ b/src/components/HeaderSearch/index.vue
@@ -121,7 +121,7 @@ export default {
 
           data.title = [...data.title, i18ntitle]
 
-          if (router.redirect !== 'noredirect') {
+          if (router.redirect !== 'noRedirect') {
             // only push the routes with title
             // special case: need to exclude parent router without redirect
             res.push(data)
diff --git a/src/router/index.js b/src/router/index.js
index d04a64be..0c5973da 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -20,7 +20,7 @@ import nestedRouter from './modules/nested'
  * alwaysShow: true               if set true, will always show the root menu
  *                                if not set alwaysShow, when item has more than one children route,
  *                                it will becomes nested mode, otherwise not show the root menu
- * redirect: noredirect           if `redirect:noredirect` will no redirect in the breadcrumb
+ * redirect: noRedirect           if set noRedirect will no redirect in the breadcrumb
  * name:'router-name'             the name is used by <keep-alive> (must set!!!)
  * meta : {
     roles: ['admin','editor']    control the page roles (you can set multiple roles)
@@ -224,7 +224,7 @@ export const asyncRoutes = [
   {
     path: '/error',
     component: Layout,
-    redirect: 'noredirect',
+    redirect: 'noRedirect',
     name: 'ErrorPages',
     meta: {
       title: 'errorPages',
@@ -249,7 +249,6 @@ export const asyncRoutes = [
   {
     path: '/error-log',
     component: Layout,
-    redirect: 'noredirect',
     children: [
       {
         path: 'log',
@@ -336,7 +335,6 @@ export const asyncRoutes = [
   {
     path: '/theme',
     component: Layout,
-    redirect: 'noredirect',
     children: [
       {
         path: 'index',
@@ -350,7 +348,6 @@ export const asyncRoutes = [
   {
     path: '/clipboard',
     component: Layout,
-    redirect: 'noredirect',
     children: [
       {
         path: 'index',
diff --git a/src/router/modules/charts.js b/src/router/modules/charts.js
index 5797ba04..59ebf188 100644
--- a/src/router/modules/charts.js
+++ b/src/router/modules/charts.js
@@ -5,7 +5,7 @@ import Layout from '@/layout'
 const chartsRouter = {
   path: '/charts',
   component: Layout,
-  redirect: 'noredirect',
+  redirect: 'noRedirect',
   name: 'Charts',
   meta: {
     title: 'charts',
diff --git a/src/router/modules/components.js b/src/router/modules/components.js
index 0d8055bd..b7407e25 100644
--- a/src/router/modules/components.js
+++ b/src/router/modules/components.js
@@ -5,7 +5,7 @@ import Layout from '@/layout'
 const componentsRouter = {
   path: '/components',
   component: Layout,
-  redirect: 'noredirect',
+  redirect: 'noRedirect',
   name: 'ComponentDemo',
   meta: {
     title: 'components',

From 3678bd18fb2f68a1efdd2f063520629c4b3b2a97 Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Tue, 16 Apr 2019 14:18:50 +0800
Subject: [PATCH 3/5] perf[Breadcrumb]: refine getBreadcrumb function

---
 src/components/Breadcrumb/index.vue | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
index 1ea13031..b89d8da6 100644
--- a/src/components/Breadcrumb/index.vue
+++ b/src/components/Breadcrumb/index.vue
@@ -31,16 +31,23 @@ export default {
   methods: {
     generateTitle,
     getBreadcrumb() {
-      // only show routes with name
-      let matched = this.$route.matched.filter(item => item.name)
-
+      // only show routes with meta.title
+      let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
       const first = matched[0]
-      if (first && first.name.trim().toLocaleLowerCase() !== 'Dashboard'.toLocaleLowerCase()) {
+
+      if (!this.isDashboard(first)) {
         matched = [{ path: '/dashboard', meta: { title: 'dashboard' }}].concat(matched)
       }
 
       this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
     },
+    isDashboard(route) {
+      const name = route && route.name
+      if (!name) {
+        return false
+      }
+      return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()
+    },
     pathCompile(path) {
       // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
       const { params } = this.$route

From 952da3287983728e164c45c8364cfef4353774eb Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Tue, 16 Apr 2019 14:46:05 +0800
Subject: [PATCH 4/5] perf[element-ui.scss]: refine default style

---
 src/styles/element-ui.scss                    | 22 +++++++------------
 .../example/components/ArticleDetail.vue      | 19 ++++++++++++++--
 2 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index 9422dd18..9581d56a 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -46,7 +46,7 @@
   }
 }
 
-//暂时性解决dialog 问题 https://github.com/ElemeFE/element/issues/2461
+// to fixed https://github.com/ElemeFE/element/issues/2461
 .el-dialog {
   transform: none;
   left: 0;
@@ -54,18 +54,7 @@
   margin: 0 auto;
 }
 
-//文章页textarea修改样式
-.article-textarea {
-  textarea {
-    padding-right: 40px;
-    resize: none;
-    border: none;
-    border-radius: 0px;
-    border-bottom: 1px solid #bfcbd9;
-  }
-}
-
-//element ui upload
+// refine element ui upload
 .upload-container {
   .el-upload {
     width: 100%;
@@ -77,9 +66,14 @@
   }
 }
 
-//dropdown
+// dropdown
 .el-dropdown-menu {
   a {
     display: block
   }
 }
+
+// fix date-picker ui bug in filter-item
+.el-range-editor.el-input__inner {
+  display: inline-flex !important;
+}
diff --git a/src/views/example/components/ArticleDetail.vue b/src/views/example/components/ArticleDetail.vue
index b1aa8df6..55d2972a 100644
--- a/src/views/example/components/ArticleDetail.vue
+++ b/src/views/example/components/ArticleDetail.vue
@@ -59,7 +59,7 @@
 
         <el-form-item style="margin-bottom: 40px;" label-width="70px" label="Summary:">
           <el-input v-model="postForm.content_short" :rows="1" type="textarea" class="article-textarea" autosize placeholder="Please enter the content" />
-          <span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}字</span>
+          <span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}words</span>
         </el-form-item>
 
         <el-form-item prop="content" style="margin-bottom: 30px;">
@@ -236,24 +236,39 @@ export default {
 
 <style lang="scss" scoped>
 @import "~@/styles/mixin.scss";
+
 .createPost-container {
   position: relative;
+
   .createPost-main-container {
     padding: 40px 45px 20px 50px;
+
     .postInfo-container {
       position: relative;
       @include clearfix;
       margin-bottom: 10px;
+
       .postInfo-container-item {
         float: left;
       }
     }
   }
+
   .word-counter {
     width: 40px;
     position: absolute;
-    right: -10px;
+    right: 10px;
     top: 0px;
   }
 }
+
+.article-textarea /deep/ {
+  textarea {
+    padding-right: 40px;
+    resize: none;
+    border: none;
+    border-radius: 0px;
+    border-bottom: 1px solid #bfcbd9;
+  }
+}
 </style>

From c00564617e8c58868d96a645f527864a3a5cc6aa Mon Sep 17 00:00:00 2001
From: yuntao1997 <510835147@qq.com>
Date: Tue, 16 Apr 2019 14:56:07 +0800
Subject: [PATCH 5/5] fix[adaptive.js]: fixed v-el-height-adaptive-table
 directive bug (#1924)

---
 src/directive/el-table/adaptive.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/directive/el-table/adaptive.js b/src/directive/el-table/adaptive.js
index 8beacff1..d229e9fd 100644
--- a/src/directive/el-table/adaptive.js
+++ b/src/directive/el-table/adaptive.js
@@ -4,7 +4,7 @@ import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/re
  * How to use
  * <el-table height="100px" v-el-height-adaptive-table="{bottomOffset: 30}">...</el-table>
  * el-table height is must be set
- *  bottomOffset: 30(default)   // The height of the table from the bottom of the page.
+ * bottomOffset: 30(default)   // The height of the table from the bottom of the page.
  */
 
 const doResize = (el, binding, vnode) => {
@@ -29,13 +29,13 @@ export default {
     el.resizeListener = () => {
       doResize(el, binding, vnode)
     }
-
-    addResizeListener(el, el.resizeListener)
+    // parameter 1 is must be "Element" type
+    addResizeListener(window.document.body, el.resizeListener)
   },
   inserted(el, binding, vnode) {
     doResize(el, binding, vnode)
   },
   unbind(el) {
-    removeResizeListener(el, el.resizeListener)
+    removeResizeListener(window.document.body, el.resizeListener)
   }
 }