瀏覽代碼

Select: add resize event

Leopoldthecoder 8 年之前
父節點
當前提交
70aed33c69
共有 5 個文件被更改,包括 13 次插入1 次删除
  1. 1 0
      build/config.js
  2. 10 0
      packages/select/src/select.vue
  3. 1 1
      packages/table/src/table.vue
  4. 1 0
      packages/theme-default/src/select.css
  5. 0 0
      src/utils/resize-event.js

+ 1 - 0
build/config.js

@@ -15,6 +15,7 @@ Object.keys(dependencies).forEach(function (key) {
 externals['element-ui/src/utils/clickoutside'] = 'element-ui/lib/utils/clickoutside';
 externals['element-ui/src/utils/popper'] = 'element-ui/lib/utils/popper';
 externals['element-ui/src/utils/vue-popper'] = 'element-ui/lib/utils/vue-popper';
+externals['element-ui/src/utils/resize-event'] = 'element-ui/lib/utils/resize-event';
 
 exports.externals = Object.assign({
   vue: 'vue'

+ 10 - 0
packages/select/src/select.vue

@@ -71,6 +71,7 @@
   import debounce from 'throttle-debounce/debounce';
   import Clickoutside from 'element-ui/src/utils/clickoutside';
   import { addClass, removeClass, hasClass } from 'wind-dom/src/class';
+  import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event';
 
   export default {
     mixins: [emitter],
@@ -505,6 +506,10 @@
           this.options.splice(index, 1);
         }
         this.broadcast('option', 'resetIndex');
+      },
+
+      resetInputWidth() {
+        this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;
       }
     },
 
@@ -528,6 +533,7 @@
     },
 
     mounted() {
+      addResizeListener(this.$el, this.resetInputWidth);
       if (this.remote && this.multiple && Array.isArray(this.value)) {
         this.selected = this.options.reduce((prev, curr) => {
           return this.value.indexOf(curr.value) > -1 ? prev.concat(curr) : prev;
@@ -541,6 +547,10 @@
           this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;
         }
       });
+    },
+
+    destroyed() {
+      if (this.resetInputWidth) removeResizeListener(this.$el, this.resetInputWidth);
     }
   };
 </script>

+ 1 - 1
packages/table/src/table.vue

@@ -86,7 +86,7 @@
 <script type="text/babel">
   import throttle from 'throttle-debounce/throttle';
   import debounce from 'throttle-debounce/debounce';
-  import { addResizeListener, removeResizeListener } from './resize-event';
+  import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event';
   import TableStore from './table-store';
   import TableLayout from './table-layout';
   import TableBody from './table-body';

+ 1 - 0
packages/theme-default/src/select.css

@@ -105,6 +105,7 @@
     @e tags {
       position: absolute;
       line-height: normal;
+      white-space: normal;
       z-index: var(--index-top);
     }
 

+ 0 - 0
packages/table/src/resize-event.js → src/utils/resize-event.js