diff --git a/src/components/dropdown/dropdown-item.vue b/src/components/dropdown/dropdown-item.vue
new file mode 100644
index 00000000..978aee00
--- /dev/null
+++ b/src/components/dropdown/dropdown-item.vue
@@ -0,0 +1,50 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/components/dropdown/dropdown-menu.vue b/src/components/dropdown/dropdown-menu.vue
new file mode 100644
index 00000000..84c98828
--- /dev/null
+++ b/src/components/dropdown/dropdown-menu.vue
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/components/dropdown/dropdown.vue b/src/components/dropdown/dropdown.vue
new file mode 100644
index 00000000..2582cafa
--- /dev/null
+++ b/src/components/dropdown/dropdown.vue
@@ -0,0 +1,89 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/components/dropdown/index.js b/src/components/dropdown/index.js
new file mode 100644
index 00000000..6283b523
--- /dev/null
+++ b/src/components/dropdown/index.js
@@ -0,0 +1,7 @@
+import Dropdown from './dropdown.vue';
+import DropdownMenu from './dropdown-menu.vue';
+import DropdownItem from './dropdown-item.vue';
+
+Dropdown.Menu = DropdownMenu;
+Dropdown.Item = DropdownItem;
+export default Dropdown;
\ No newline at end of file
diff --git a/src/components/select/dropdown.vue b/src/components/select/dropdown.vue
index 2e419b6a..09b00fd6 100644
--- a/src/components/select/dropdown.vue
+++ b/src/components/select/dropdown.vue
@@ -5,6 +5,12 @@
import Popper from 'popper.js';
export default {
+ props: {
+ placement: {
+ type: String,
+ default: 'bottom-start'
+ }
+ },
data () {
return {
popper: null
@@ -20,7 +26,7 @@
this.$nextTick(() => {
this.popper = new Popper(this.$parent.$els.reference, this.$el, {
gpuAcceleration: false,
- placement: 'bottom-start',
+ placement: this.placement,
boundariesPadding: 0,
forceAbsolute: true,
boundariesElement: 'body'
diff --git a/src/index.js b/src/index.js
index 5ce567fc..1d76e175 100644
--- a/src/index.js
+++ b/src/index.js
@@ -12,6 +12,7 @@ import Cascader from './components/cascader';
import Checkbox from './components/checkbox';
import Circle from './components/circle';
import Collapse from './components/collapse';
+import Dropdown from './components/dropdown';
import Icon from './components/icon';
import Input from './components/input';
import InputNumber from './components/input-number';
@@ -49,6 +50,9 @@ const iview = {
Checkbox,
CheckboxGroup: Checkbox.Group,
Circle,
+ Dropdown,
+ DropdownItem: Dropdown.Item,
+ DropdownMenu: Dropdown.Menu,
iCol: Col,
Collapse,
Icon,
diff --git a/src/styles/components/dropdown.less b/src/styles/components/dropdown.less
new file mode 100644
index 00000000..c228ab9f
--- /dev/null
+++ b/src/styles/components/dropdown.less
@@ -0,0 +1,17 @@
+@dropdown-prefix-cls: ~"@{css-prefix}dropdown";
+@dropdown-item-prefix-cls: ~"@{dropdown-prefix-cls}-item";
+
+.@{dropdown-prefix-cls} {
+ display: inline-block;
+ position: relative;
+
+ &-rel{
+ display: inline-block;
+ }
+
+ &-menu{
+ min-width: 100px;
+ }
+}
+
+.select-item(@dropdown-prefix-cls, @dropdown-item-prefix-cls);
\ No newline at end of file
diff --git a/src/styles/components/index.less b/src/styles/components/index.less
index 9836a0b3..d22c9be5 100644
--- a/src/styles/components/index.less
+++ b/src/styles/components/index.less
@@ -28,4 +28,5 @@
@import "slider";
@import "cascader";
@import "transfer";
-@import "table";
\ No newline at end of file
+@import "table";
+@import "dropdown";
\ No newline at end of file
diff --git a/src/styles/mixins/input.less b/src/styles/mixins/input.less
index 62daa52d..78760364 100644
--- a/src/styles/mixins/input.less
+++ b/src/styles/mixins/input.less
@@ -27,7 +27,7 @@
.input-small() {
padding: @input-padding-vertical-small @input-padding-horizontal;
height: @input-height-small;
- border-radius: @border-radius-small;
+ border-radius: @btn-border-radius-small;
}
.input() {
@@ -38,7 +38,7 @@
padding: @input-padding-vertical-base @input-padding-horizontal;
font-size: @font-size-small;
border: 1px solid @input-border-color;
- border-radius: @border-radius-base;
+ border-radius: @btn-border-radius;
color: @input-color;
background-color: @input-bg;
background-image: none;
diff --git a/src/styles/mixins/select.less b/src/styles/mixins/select.less
index 9ed592d7..d3a1b903 100644
--- a/src/styles/mixins/select.less
+++ b/src/styles/mixins/select.less
@@ -37,6 +37,18 @@
&-selected&-focus {
background: shade(@selected-color, 10%);
}
+
+ &-divided{
+ margin-top: 5px;
+ border-top: 1px solid @border-color-split;
+ &:before{
+ content: '';
+ height: 5px;
+ display: block;
+ margin: -7px -16px 0;
+ background-color: #fff;
+ }
+ }
}
.@{size-class}-large .@{item-class} {
diff --git a/test/app.vue b/test/app.vue
index 12d38274..3d6a6a99 100644
--- a/test/app.vue
+++ b/test/app.vue
@@ -42,6 +42,7 @@ li + li {
Cascader
Transfer
Table
+ Dropdown
diff --git a/test/main.js b/test/main.js
index 982ec29f..c572d57d 100644
--- a/test/main.js
+++ b/test/main.js
@@ -107,6 +107,11 @@ router.map({
component: function (resolve) {
require(['./routers/table.vue'], resolve);
}
+ },
+ '/dropdown': {
+ component: function (resolve) {
+ require(['./routers/dropdown.vue'], resolve);
+ }
}
});
diff --git a/test/routers/dropdown.vue b/test/routers/dropdown.vue
new file mode 100644
index 00000000..062970b7
--- /dev/null
+++ b/test/routers/dropdown.vue
@@ -0,0 +1,33 @@
+
+
+
+
+ 下拉菜单
+
+
+
+ 张三
+ 李四
+ 王五
+ 周六
+
+
+
+
\ No newline at end of file