diff --git a/packages/dropdown-item/index.js b/packages/dropdown-item/index.js index 2cf45b940..ea7f702ee 100644 --- a/packages/dropdown-item/index.js +++ b/packages/dropdown-item/index.js @@ -12,7 +12,8 @@ export default sfc({ props: { value: null, title: String, - options: Array + options: Array, + disabled: Boolean }, data() { diff --git a/packages/dropdown-menu/demo/index.vue b/packages/dropdown-menu/demo/index.vue index 9396eceda..a22858c9b 100644 --- a/packages/dropdown-menu/demo/index.vue +++ b/packages/dropdown-menu/demo/index.vue @@ -41,6 +41,21 @@ + + + + + + + @@ -49,6 +64,7 @@ export default { i18n: { 'zh-CN': { customContent: '自定义菜单内容', + disableMenu: '禁用菜单', switchTitle1: '包邮', switchTitle2: '团购', itemTitle: '筛选', @@ -65,6 +81,7 @@ export default { }, 'en-US': { customContent: 'Custom Content', + disableMenu: 'Disable Menu', switchTitle1: 'Title', switchTitle2: 'Title', itemTitle: 'Title', diff --git a/packages/dropdown-menu/en-US.md b/packages/dropdown-menu/en-US.md index 63b3cd757..41335d7d2 100644 --- a/packages/dropdown-menu/en-US.md +++ b/packages/dropdown-menu/en-US.md @@ -94,6 +94,7 @@ export default { | value | Value of current option,can use `v-model` | `String | Number` | - | | title | Item title | `String` | Text of selected option | | options | Options | `Array` | `[]` | +| disabled | Whether to disable dropdown item | `Boolean` | `false` | ### DropdownItem Events diff --git a/packages/dropdown-menu/index.js b/packages/dropdown-menu/index.js index 79fc09831..55a5d6730 100644 --- a/packages/dropdown-menu/index.js +++ b/packages/dropdown-menu/index.js @@ -61,9 +61,11 @@ export default sfc({ render(h) { const Titles = this.children.map((item, index) => (
{ - this.toggleItem(index); + if (!item.disabled) { + this.toggleItem(index); + } }} >
+
+
+
全部商品
+
默认排序
+ + +
+
`; diff --git a/packages/dropdown-menu/test/__snapshots__/index.spec.js.snap b/packages/dropdown-menu/test/__snapshots__/index.spec.js.snap index 61b19c988..74e0ae9ff 100644 --- a/packages/dropdown-menu/test/__snapshots__/index.spec.js.snap +++ b/packages/dropdown-menu/test/__snapshots__/index.spec.js.snap @@ -45,6 +45,15 @@ exports[`didn\`t find matched option 1`] = ` `; +exports[`disable dropdown item 1`] = ` +
+
A
+ +
+`; + exports[`show dropdown item 1`] = `
A
diff --git a/packages/dropdown-menu/test/index.spec.js b/packages/dropdown-menu/test/index.spec.js index a195d44a6..08909b2be 100644 --- a/packages/dropdown-menu/test/index.spec.js +++ b/packages/dropdown-menu/test/index.spec.js @@ -99,6 +99,32 @@ test('destroy one item', async () => { expect(wrapper).toMatchSnapshot(); }); +test('disable dropdown item', async () => { + const wrapper = mount({ + template: ` + + + + `, + components: { + DropdownItem, + DropdownMenu + }, + data() { + return { + value: 0, + options: [ + { text: 'A', value: 0 }, + { text: 'B', value: 1 } + ] + }; + } + }); + + const title = wrapper.find('.van-dropdown-menu__title'); + title.trigger('click'); + expect(wrapper).toMatchSnapshot(); +}); test('change event', async () => { const onChange = jest.fn(); diff --git a/packages/dropdown-menu/zh-CN.md b/packages/dropdown-menu/zh-CN.md index 05c97c13c..8ff1111d8 100644 --- a/packages/dropdown-menu/zh-CN.md +++ b/packages/dropdown-menu/zh-CN.md @@ -78,6 +78,15 @@ export default { }; ``` +### 禁用菜单 + +```html + + + + +``` + ## API ### DropdownMenu Props @@ -96,6 +105,7 @@ export default { | value | 当前选中项对应的 value,可以通过`v-model`双向绑定 | `String | Number` | - | - | | title | 菜单项标题 | `String` | 当前选中项文字 | - | | options | 选项数组 | `Array` | `[]` | - | +| disabled | 是否禁用菜单 | `Boolean` | `false` | - | ### DropdownItem Events