فهرست منبع

Merge branch 'master' into unittest

qingwei.li 8 سال پیش
والد
کامیت
aa81c770eb
74فایلهای تغییر یافته به همراه301 افزوده شده و 969 حذف شده
  1. 2 2
      build/bin/build-all.js
  2. 1 1
      build/bin/new.js
  3. 0 1
      components.json
  4. 4 15
      packages/alert/cooking.conf.js
  5. 4 15
      packages/autocomplete/cooking.conf.js
  6. 4 15
      packages/badge/cooking.conf.js
  7. 4 15
      packages/breadcrumb/cooking.conf.js
  8. 4 15
      packages/button/cooking.conf.js
  9. 4 15
      packages/card/cooking.conf.js
  10. 0 50
      packages/cascader/README.md
  11. 0 29
      packages/cascader/cooking.conf.js
  12. 0 7
      packages/cascader/index.js
  13. 0 17
      packages/cascader/package.json
  14. 0 91
      packages/cascader/src/cascader.vue
  15. 0 109
      packages/cascader/src/dropdown.vue
  16. 0 35
      packages/cascader/src/menu.vue
  17. 10 0
      packages/checkbox/_index.js
  18. 4 15
      packages/checkbox/cooking.conf.js
  19. 1 1
      packages/checkbox/index.js
  20. 4 15
      packages/col/cooking.conf.js
  21. 27 21
      packages/date-picker/README.md
  22. 13 0
      packages/date-picker/_index.js
  23. 5 16
      packages/date-picker/cooking.conf.js
  24. 1 1
      packages/date-picker/index.js
  25. 4 15
      packages/dialog/cooking.conf.js
  26. 1 1
      packages/dialog/index.js
  27. 4 15
      packages/dropdown/cooking.conf.js
  28. 10 0
      packages/form/_index.js
  29. 5 16
      packages/form/cooking.conf.js
  30. 4 15
      packages/input-number/cooking.conf.js
  31. 4 15
      packages/input/cooking.conf.js
  32. 4 15
      packages/loading/cooking.conf.js
  33. 0 2
      packages/loading/index.js
  34. 16 0
      packages/menu/_index.js
  35. 5 16
      packages/menu/cooking.conf.js
  36. 4 3
      packages/menu/package.json
  37. 4 15
      packages/message-box/cooking.conf.js
  38. 0 1
      packages/message-box/index.js
  39. 4 15
      packages/message/cooking.conf.js
  40. 0 1
      packages/message/index.js
  41. 4 15
      packages/notification/cooking.conf.js
  42. 0 1
      packages/notification/index.js
  43. 4 15
      packages/pagination/cooking.conf.js
  44. 4 15
      packages/popover/cooking.conf.js
  45. 4 15
      packages/progress/cooking.conf.js
  46. 13 0
      packages/radio/_index.js
  47. 6 17
      packages/radio/cooking.conf.js
  48. 4 15
      packages/rate/cooking.conf.js
  49. 4 15
      packages/row/cooking.conf.js
  50. 1 1
      packages/row/index.js
  51. 0 29
      packages/select-dropdown/cooking.conf.js
  52. 0 7
      packages/select-dropdown/index.js
  53. 13 0
      packages/select/_index.js
  54. 5 16
      packages/select/cooking.conf.js
  55. 0 0
      packages/select/src/select-dropdown.vue
  56. 1 1
      packages/select/src/select.vue
  57. 4 15
      packages/slider/cooking.conf.js
  58. 4 15
      packages/spinner/cooking.conf.js
  59. 10 0
      packages/steps/_index.js
  60. 5 16
      packages/steps/cooking.conf.js
  61. 5 16
      packages/switch/cooking.conf.js
  62. 1 1
      packages/switch/index.js
  63. 10 0
      packages/table/_index.js
  64. 5 16
      packages/table/cooking.conf.js
  65. 1 1
      packages/table/index.js
  66. 10 0
      packages/tabs/_index.js
  67. 5 16
      packages/tabs/cooking.conf.js
  68. 0 2
      packages/tabs/index.js
  69. 4 15
      packages/tag/cooking.conf.js
  70. 4 15
      packages/tooltip/cooking.conf.js
  71. 4 15
      packages/tree/cooking.conf.js
  72. 4 15
      packages/upload/cooking.conf.js
  73. 0 3
      src/index.js
  74. 1 0
      src/utils/vue-popper.js

+ 2 - 2
build/bin/build-all.js

@@ -14,12 +14,12 @@ Object.keys(components).forEach(key => {
   const filePath = path.join(__dirname, `../../packages/${key}/cooking.conf.js`);
 
   if (existsSync(filePath)) {
-    componentPaths.push(`../packages/${key}/cooking.conf.js`);
+    componentPaths.push(`packages/${key}/cooking.conf.js`);
   }
 });
 
 const paths = componentPaths.join(',');
-const cli = `cooking build -c ${paths} -p`;
+const cli = `node_modules/.bin/cooking build -c ${paths} -p`;
 
 execSync(cli, {
   stdio: 'inherit'

+ 1 - 1
build/bin/new.js

@@ -16,7 +16,7 @@ const uppercamelcase = require('uppercamelcase');
 const componentname = process.argv[2];
 const chineseName = process.argv[3] || componentname;
 const ComponentName = uppercamelcase(componentname);
-const PackagePath = path.resolve(__dirname, '../packages', componentname);
+const PackagePath = path.resolve(__dirname, '../../packages', componentname);
 const Files = [
   {
     filename: 'index.js',

+ 0 - 1
components.json

@@ -1,5 +1,4 @@
 {
-  "select-dropdown": "./packages/select-dropdown/index.js",
   "pagination": "./packages/pagination/index.js",
   "dialog": "./packages/dialog/index.js",
   "autocomplete": "./packages/autocomplete/index.js",

+ 4 - 15
packages/alert/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElAlert',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/autocomplete/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElAutocomplete',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/badge/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElBadge',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/breadcrumb/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElBreadcrumb',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/button/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElButton',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/card/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElCard',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 50
packages/cascader/README.md

@@ -1,50 +0,0 @@
-# el-cascader
-> A el-cascader component for Vue.js.
-
-## Installation
-```shell
-npm i el-cascader -D
-```
-
-## Usage
-```javascript
-import Vue from 'vue'
-import ElCascader from 'el-cascader'
-import 'theme-default/dist/cascader.css'
-
-Vue.use(ElCascader)
-```
-
-or
-
-```javascript
-import Vue from 'vue'
-import { ElCascader } from 'el-cascader'
-
-Vue.component('el-cascader', ElCascader)
-```
-
-
-## Options
-
-### el-cascader
-
-| 参数               | 说明                                                     | 类型              | 可选值      | 默认值 |
-|--------------------|----------------------------------------------------------|-------------------|-------------|--------|
-|model| 绑定值| string | | |
-|placeholder| 占位符| string | | | |
-
-
-## Development
-```shell
-make dev
-
-## test
-make test
-
-## build
-make build
-```
-
-# License
-[MIT](https://opensource.org/licenses/MIT)

+ 0 - 29
packages/cascader/cooking.conf.js

@@ -1,29 +0,0 @@
-var cooking = require('cooking');
-var path = require('path');
-
-cooking.set({
-  entry: {
-    index: path.join(__dirname, 'index.js')
-  },
-  dist: path.join(__dirname, 'lib'),
-  template: false,
-  format: 'umd',
-  moduleName: 'ElCascader',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
-});
-
-module.exports = cooking.resolve();

+ 0 - 7
packages/cascader/index.js

@@ -1,7 +0,0 @@
-const ElCascader = require('./src/cascader');
-
-ElCascader.install = function(Vue) {
-  Vue.component(ElCascader.name, ElCascader);
-};
-
-module.exports = ElCascader;

+ 0 - 17
packages/cascader/package.json

@@ -1,17 +0,0 @@
-{
-  "name": "el-cascader",
-  "version": "1.0.1",
-  "description": "A cascader component for Vue.",
-  "keywords": [
-    "element",
-    "vue",
-    "component"
-  ],
-  "main": "./lib/index.js",
-  "repository": "https://github.com/element-component/element/tree/master/packages/cascader",
-  "author": "qingwei-li<qingwei.li@ele.me>",
-  "license": "MIT",
-  "dependencies": {
-    "object-equal": "^1.0.0"
-  }
-}

+ 0 - 91
packages/cascader/src/cascader.vue

@@ -1,91 +0,0 @@
-<script>
-  import ElInput from 'element-ui/packages/input/index.js';
-  import ElDropdown from './dropdown.vue';
-
-  /**
-   * ElCascader
-   * @module components/basic/cascader
-   * @desc 级联下拉选择
-   * @param {string} model - 绑定值
-   * @param {string} [placeholder] - 占位内容
-   */
-  export default {
-    name: 'ElCascader',
-
-    props: {
-      model: {
-        required: true,
-        type: String
-      },
-      placeholder: String
-    },
-
-    directives: {
-      ElementClickoutside: require('element-ui/src/utils/clickoutside').default
-    },
-
-    data() {
-      return {
-        show: false,
-        data: [],
-        menus: []
-      };
-    },
-
-    compiled() {
-      this.data.push(this.menus);
-    },
-
-    methods: {
-      handleSelected(selected, index) {
-        const nextIndex = index + 1;
-        let removeIndex = nextIndex;
-
-        if (selected.hasOwnProperty('submenu')) {
-          this.data.$set(nextIndex, selected.submenu);
-          removeIndex++;
-        }
-
-        this.data = this.data.slice(0, removeIndex);
-      }
-    },
-
-    components: {
-      ElInput,
-      ElDropdown
-    }
-  };
-</script>
-
-<template>
-  <div
-    class="element-cascader"
-    v-element-clickoutside="show = false">
-
-    <el-input
-      readonly
-      :value.sync="model"
-      @click="show = !show"
-      :placeholder="placeholder">
-    </el-input>
-
-    <div
-      v-show="show"
-      class="element-cascader__dropdown">
-      <div class="element-cascader__wrap">
-        <el-dropdown
-          class="element-cascader__menu"
-          v-ref:dropdown
-          :model.sync="model"
-          :data="list"
-          :index="$index"
-          trigger="hover"
-          v-for="list in data"
-          @change="handleSelected">
-        </el-dropdown>
-      </div>
-    </div>
-
-    <slot></slot>
-  </div>
-</template>

+ 0 - 109
packages/cascader/src/dropdown.vue

@@ -1,109 +0,0 @@
-<script>
-  import isEqual from 'object-equal';
-
-  /**
-   * dropdown
-   * @module components/basic/dropdown
-   * @desc 级联选择下拉菜单
-   * @param {object[]} data - 基本数据
-   * @param {string|string[]} [model] - 绑定值,需双向绑定
-   * @param {number} [index] - 当前组件的索引
-   * @param {string} [trigger=click] - 触发方式,可选'click', 'hover'
-   * @param {boolean} [allow-arrow=false] - 是否显示箭头
-   * @param {function} [change] - 选中后的回调函数
-   */
-  module.exports = {
-    name: 'ElDropdown',
-
-    props: {
-      data: {
-        default() {
-          return [];
-        },
-        required: true
-      },
-      model: {
-        default() {
-          return [];
-        },
-        twoWay: true
-      },
-      index: Number,
-      trigger: {
-        type: String,
-        default: 'click',
-        validator(value) {
-          return ['click', 'hover'].indexOf(value) > -1;
-        }
-      }
-    },
-
-    data() {
-      return {
-        cache: {}
-      };
-    },
-
-    watch: {
-      model(value) {
-        if (!value) {
-          this.cache = '';
-        }
-      }
-    },
-
-    methods: {
-      handleSelected(trigger, data, pid, id) {
-        let cache;
-
-        if (trigger === 'click' && !data.hasOwnProperty('submenu')) {
-          this.$parent.show = false;
-        }
-
-        if (data.disabled || trigger !== this.trigger) {
-          return;
-        }
-        // 缓存结果
-        cache = { pid: pid, id: id };
-        if (isEqual(cache, this.cache)) {
-          return;
-        }
-        this.cache = cache;
-
-        // 返回结果,如果需要返回完整数据(每一层的数据)需要 model 为数组类型且父组件
-        // 设置了 completed 属性
-        if (this.$parent.completed) {
-          if (!Array.isArray(this.model)) {
-            this.model = [];
-          }
-
-          this.model.$set(pid, data.label);
-          this.model = this.model.slice(0, pid + 1);
-        } else {
-          this.model = data.label;
-        }
-
-        this.$nextTick(() => this.$dispatch('change', data, pid));
-      }
-    }
-  };
-</script>
-
-<template>
-  <div class="element-dropdown">
-    <ul class="element-dropdown__list">
-      <li
-        v-for="item in data"
-        class="element-option element-option--arrow"
-        :class="{
-          'is-disabled': item.disabled,
-          'is-selected': cache.pid === index && cache.id === $index,
-          'is-last': !item.hasOwnProperty('submenu')
-        }"
-        @click="handleSelected('click', item, index, $index)"
-        @mouseover="handleSelected('hover', item, index, $index)">
-        <span v-text="item.label"></span>
-      </li>
-    </ul>
-  </div>
-</template>

+ 0 - 35
packages/cascader/src/menu.vue

@@ -1,35 +0,0 @@
-<script>
-  /**
-   * menu
-   * @module components/basic/menu
-   * @desc 用于 dropdown 中的菜单
-   * @param {string} label - 名称
-   */
-  export default {
-    name: 'ElMenu',
-
-    props: {
-      label: String,
-      disabled: Boolean
-    },
-
-    compiled() {
-      const parent = this.$parent;
-      let menu = {
-        label: this.label,
-        disabled: this.disabled
-      };
-
-      if (this.submenu) {
-        menu.submenu = this.submenu;
-      }
-
-      if (parent.$options.name !== this.name && parent.hasOwnProperty('menus')) {
-        parent.menus = parent.menus.concat(menu);
-      } else {
-        parent.submenu = (parent.submenu || []).concat(menu);
-      }
-
-    }
-  };
-</script>

+ 10 - 0
packages/checkbox/_index.js

@@ -0,0 +1,10 @@
+const ElCheckbox = require('./src/checkbox');
+const ElCheckboxGroup = require('./src/checkbox-group.vue');
+
+module.exports = function install(Vue) {
+  Vue.component(ElCheckboxGroup.name, ElCheckboxGroup);
+  Vue.component(ElCheckbox.name, ElCheckbox);
+};
+
+exports.ElCheckbox = ElCheckbox;
+exports.ElCheckboxGroup = ElCheckboxGroup;

+ 4 - 15
packages/checkbox/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElCheckbox',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/checkbox/index.js

@@ -1,7 +1,7 @@
 const ElCheckbox = require('./src/checkbox');
 
 ElCheckbox.install = function(Vue) {
-  Vue.component('el-checkbox', ElCheckbox);
+  Vue.component(ElCheckbox.name, ElCheckbox);
 };
 
 module.exports = ElCheckbox;

+ 4 - 15
packages/col/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElCol',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 27 - 21
packages/date-picker/README.md

@@ -1,33 +1,39 @@
-# __component_name__
+# el-date-picker
 
-# Screenshots
 
-# Demo
+## Installation
+```shell
+npm i el-date-picker -S
+```
 
-# Installation
->
+## Usage
 
-# Usage
+A:
 ```javascript
+import Vue from 'vue'
+import ElDatePicker from 'el-date-picker'
 
+Vue.use(ElDatePicker)
 ```
 
-# Options
-
-|     name    | description |     type    |   default   |
-|-------------|-------------|-------------|-------------|
-|             |             |             |             |
-
-# Development
-```shell
-make dev
+B:
+```javascript
+import Vue from 'vue'
+import { DatePicker, TimePicker, TimeSelect } from 'el-date-picker'
 
-# test
-make test
+Vue.component(DatePicker.name, DatePicker);
+Vue.component(TimePicker.name, TimePicker);
+Vue.component(TimeSelect.name, TimeSelect);
+```
 
-# build
-make build
+C:
+```html
+<script src="path/to/vue/dist/vue.js"></script>
+<script src="path/to/el-date-picker/index.js"></script>
+<script>
+  Vue.use(ElDatePicker);
+</script>
 ```
 
-# License
-[MIT](https://opensource.org/licenses/MIT)
+## License
+MIT

+ 13 - 0
packages/date-picker/_index.js

@@ -0,0 +1,13 @@
+import DatePicker from './src/picker/date-picker';
+import TimePicker from './src/picker/time-picker';
+import TimeSelect from './src/picker/time-select';
+
+module.exports = function install(Vue) {
+  Vue.component(DatePicker.name, DatePicker);
+  Vue.component(TimePicker.name, TimePicker);
+  Vue.component(TimeSelect.name, TimeSelect);
+};
+
+exports.DatePicker = DatePicker;
+exports.TimePicker = TimePicker;
+exports.TimeSelect = TimeSelect;

+ 5 - 16
packages/date-picker/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElDatePicker',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/date-picker/index.js

@@ -1,2 +1,2 @@
-import Picker from '../date-picker/src/picker/date-picker';
+import Picker from './src/picker/date-picker';
 module.exports = Picker;

+ 4 - 15
packages/dialog/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElDialog',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/dialog/index.js

@@ -1,7 +1,7 @@
 const ElDialog = require('./src/component');
 
 ElDialog.install = function(Vue) {
-  Vue.component('el-dialog', ElDialog);
+  Vue.component(ElDialog.name, ElDialog);
 };
 
 module.exports = ElDialog;

+ 4 - 15
packages/dropdown/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElDropdown',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 10 - 0
packages/form/_index.js

@@ -0,0 +1,10 @@
+const ElFormItem = require('./src/form-item');
+const ElForm = require('./src/form');
+
+module.exports = function(Vue) {
+  Vue.component(ElForm.name, ElForm);
+  Vue.component(ElFormItem.name, ElFormItem);
+};
+
+exports = ElFormItem;
+exports = ElForm;

+ 5 - 16
packages/form/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElForm',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/input-number/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElInputNumber',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/input/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElInput',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/loading/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElLoading',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 2
packages/loading/index.js

@@ -1,4 +1,2 @@
 import Loading from './src/directive';
-Loading.name = 'loading';
-
 module.exports = Loading;

+ 16 - 0
packages/menu/_index.js

@@ -0,0 +1,16 @@
+const ElMenu = require('./src/menu');
+const ElMenuItem = require('./src/menu-item');
+const ElMenuItemGroup = require('./src/menu-item-group');
+const ElSubmenu = require('./src/submenu');
+
+module.exports = function(Vue) {
+  Vue.component(ElMenuItem.name, ElMenuItem);
+  Vue.component(ElMenuItemGroup.name, ElMenuItemGroup);
+  Vue.component(ElMenu.name, ElMenu);
+  Vue.component(ElSubmenu.name, ElSubmenu);
+};
+
+exports.ElMenuItemGroup = ElMenuItemGroup;
+exports.ElMenuItem = ElMenuItem;
+exports.ElMenu = ElMenu;
+exports.ElSubmenu = ElSubmenu;

+ 5 - 16
packages/menu/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElMenu',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 3
packages/select-dropdown/package.json → packages/menu/package.json

@@ -1,16 +1,17 @@
 {
-  "name": "el-select-dropdown",
+  "name": "el-menu",
   "version": "0.0.0",
-  "description": "A select-dropdown component for Vue.js.",
+  "description": "A menu component for Vue.js.",
   "keywords": [
     "element",
     "vue",
     "component"
   ],
   "main": "./lib/index.js",
-  "repository": "https://github.com/element-component/element/tree/master/packages/select-dropdown",
+  "repository": "https://github.com/element-component/element/tree/master/packages/menu",
   "author": "elemefe",
   "license": "MIT",
   "dependencies": {
+    "wind-dom": "0.0.3"
   }
 }

+ 4 - 15
packages/message-box/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElMessageBox',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 1
packages/message-box/index.js

@@ -1,3 +1,2 @@
 import MessageBox from './src/main.js';
-
 module.exports = MessageBox;

+ 4 - 15
packages/message/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElMessage',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 1
packages/message/index.js

@@ -1,3 +1,2 @@
 import Message from './src/main.js';
-
 module.exports = Message;

+ 4 - 15
packages/notification/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElNotification',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 1
packages/notification/index.js

@@ -1,3 +1,2 @@
 import Notification from './src/main.js';
-
 module.exports = Notification;

+ 4 - 15
packages/pagination/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElPagination',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/popover/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElPopover',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/progress/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElProgress',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 13 - 0
packages/radio/_index.js

@@ -0,0 +1,13 @@
+const ElRadio = require('./src/radio');
+const RadioButton = require('./src/radio-button.vue');
+const RadioGroup = require('./src/radio-group.vue');
+
+module.exports = function(Vue) {
+  Vue.component(ElRadio.name, ElRadio);
+  Vue.component(RadioButton.name, RadioButton);
+  Vue.component(RadioGroup.name, RadioGroup);
+};
+
+exports.ElRadio = ElRadio;
+exports.RadioButton = ElRadio;
+exports.RadioGroup = RadioGroup;

+ 6 - 17
packages/radio/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
-  moduleName: 'ElCascader',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  moduleName: 'ElRadio',
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/rate/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElRate',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/row/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElRow',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/row/index.js

@@ -1,7 +1,7 @@
 const ElRow = require('./src/row');
 
 ElRow.install = function(Vue) {
-  Vue.component('el-row', ElRow);
+  Vue.component(ElRow.name, ElRow);
 };
 
 module.exports = ElRow;

+ 0 - 29
packages/select-dropdown/cooking.conf.js

@@ -1,29 +0,0 @@
-var cooking = require('cooking');
-var path = require('path');
-
-cooking.set({
-  entry: {
-    index: path.join(__dirname, 'index.js')
-  },
-  dist: path.join(__dirname, 'lib'),
-  template: false,
-  format: 'umd',
-  moduleName: 'ElSelectMenu',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
-});
-
-module.exports = cooking.resolve();

+ 0 - 7
packages/select-dropdown/index.js

@@ -1,7 +0,0 @@
-const SelectDropdown = require('./src/select-dropdown.vue');
-
-SelectDropdown.install = function(Vue) {
-  Vue.component(SelectDropdown.name, SelectDropdown);
-};
-
-module.exports = SelectDropdown;

+ 13 - 0
packages/select/_index.js

@@ -0,0 +1,13 @@
+const ElSelect = require('./src/select');
+const ElOption = require('./src/option');
+const ElOptionGroup = require('./src/option-group');
+
+module.exports = function(Vue) {
+  Vue.component(ElSelect.name, ElSelect);
+  Vue.component(ElOption.name, ElOption);
+  Vue.component(ElOptionGroup.name, ElOptionGroup);
+};
+
+exports.ElSelect = ElSelect;
+exports.ElOption = ElOption;
+exports.ElOptionGroup = ElOptionGroup;

+ 5 - 16
packages/select/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElSelect',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 0
packages/select-dropdown/src/select-dropdown.vue → packages/select/src/select-dropdown.vue


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

@@ -66,7 +66,7 @@
 <script type="text/babel">
   import emitter from 'element-ui/src/mixins/emitter';
   import ElInput from 'element-ui/packages/input/index.js';
-  import ElSelectMenu from 'element-ui/packages/select-dropdown/index.js';
+  import ElSelectMenu from './select-dropdown.vue';
   import ElTag from 'element-ui/packages/tag/index.js';
   import debounce from 'throttle-debounce/debounce';
   import Clickoutside from 'element-ui/src/utils/clickoutside';

+ 4 - 15
packages/slider/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElSlider',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/spinner/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElSpinner',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 10 - 0
packages/steps/_index.js

@@ -0,0 +1,10 @@
+const Steps = require('./src/steps');
+const Step = require('./src/step');
+
+module.exports = function(Vue) {
+  Vue.component(Steps.name, Steps);
+  Vue.component(Step.name, Step);
+};
+
+exports.Steps = Steps;
+exports.Step = Step;

+ 5 - 16
packages/steps/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElSteps',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 5 - 16
packages/switch/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -8,22 +9,10 @@ cooking.set({
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
-  moduleName: 'ElCascader',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  moduleName: 'ElSwitch',
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/switch/index.js

@@ -1,7 +1,7 @@
 const ElSwitch = require('./src/component');
 
 ElSwitch.install = function(Vue) {
-  Vue.component('el-switch', ElSwitch);
+  Vue.component(ElSwitch.name, ElSwitch);
 };
 
 module.exports = ElSwitch;

+ 10 - 0
packages/table/_index.js

@@ -0,0 +1,10 @@
+const ElTableColumn = require('./src/table-column');
+const ElTable = require('./src/table');
+
+module.exports = function(Vue) {
+  Vue.component(ElTable.name, ElTable);
+  Vue.component(ElTableColumn.name, ElTableColumn);
+};
+
+exports.ElTable = ElTable;
+exports.ElTableColumn = ElTableColumn;

+ 5 - 16
packages/table/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElTable',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 1 - 1
packages/table/index.js

@@ -1,7 +1,7 @@
 const ElTable = require('./src/table');
 
 ElTable.install = function(Vue) {
-  Vue.component('el-table', ElTable);
+  Vue.component(ElTable.name, ElTable);
 };
 
 module.exports = ElTable;

+ 10 - 0
packages/tabs/_index.js

@@ -0,0 +1,10 @@
+const ElTabs = require('./src/tabs');
+const ElTabPane = require('./src/tab-pane');
+
+module.exports = function(Vue) {
+  Vue.component(ElTabs.name, ElTabs);
+  Vue.component(ElTabPane.name, ElTabPane);
+};
+
+exports.ElTabs = ElTabs;
+exports.ElTabPane = ElTabPane;

+ 5 - 16
packages/tabs/cooking.conf.js

@@ -1,29 +1,18 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
-    index: path.join(__dirname, 'index.js')
+    index: path.join(__dirname, '_index.js')
   },
   dist: path.join(__dirname, 'lib'),
   template: false,
   format: 'umd',
   moduleName: 'ElTabs',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 2
packages/tabs/index.js

@@ -1,9 +1,7 @@
 const ElTabs = require('./src/tabs');
-const ElTabPane = require('./src/tab-pane');
 
 ElTabs.install = function(Vue) {
   Vue.component(ElTabs.name, ElTabs);
-  Vue.component(ElTabPane.name, ElTabPane);
 };
 
 module.exports = ElTabs;

+ 4 - 15
packages/tag/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElTag',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/tooltip/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElTooltip',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/tree/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElTree',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 4 - 15
packages/upload/cooking.conf.js

@@ -1,5 +1,6 @@
 var cooking = require('cooking');
 var path = require('path');
+var config = require('../../build/config');
 
 cooking.set({
   entry: {
@@ -9,21 +10,9 @@ cooking.set({
   template: false,
   format: 'umd',
   moduleName: 'ElUpload',
-  extends: ['vue2']
-});
-
-cooking.add('resolve.alias', {
-  'main': path.join(__dirname, '../../src'),
-  'packages': path.join(__dirname, '../../packages')
-});
-
-cooking.add('externals', {
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  extends: ['vue2'],
+  alias: config.alias,
+  externals: { vue: config.vue }
 });
 
 module.exports = cooking.resolve();

+ 0 - 3
src/index.js

@@ -1,4 +1,3 @@
-import SelectDropdown from '../packages/select-dropdown/index.js';
 import Pagination from '../packages/pagination/index.js';
 import Dialog from '../packages/dialog/index.js';
 import Autocomplete from '../packages/autocomplete/index.js';
@@ -58,7 +57,6 @@ import Step from '../packages/step/index.js';
 const install = function(Vue) {
   if (install.installed) return;
 
-  Vue.component(SelectDropdown.name, SelectDropdown);
   Vue.component(Pagination.name, Pagination);
   Vue.component(Dialog.name, Dialog);
   Vue.component(Autocomplete.name, Autocomplete);
@@ -129,7 +127,6 @@ if (typeof window !== 'undefined' && window.Vue) {
 module.exports = {
   version: '1.0.0-rc.7',
   install,
-  SelectDropdown,
   Pagination,
   Dialog,
   Autocomplete,

+ 1 - 0
src/utils/vue-popper.js

@@ -86,6 +86,7 @@ export default {
       this.popperJS.onCreate(_ => {
         this.$emit('created', this);
         this.resetTransformOrigin();
+        this.$nextTick(this.updatePopper);
       });
       this.popperJS._popper.style.zIndex = PopupManager.nextZIndex();
     },