Skip to content

Commit ce07ea3

Browse files
committed
feat: update dropdown
1 parent e7c8060 commit ce07ea3

File tree

10 files changed

+65
-28
lines changed

10 files changed

+65
-28
lines changed

build/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
22
dev: {
3-
componentName: 'drawer', // dev components
3+
componentName: 'dropdown', // dev components
44
},
55
};

components/dropdown/__tests__/__snapshots__/demo.test.js.snap

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,21 @@ exports[`renders ./components/dropdown/demo/basic.md correctly 1`] = `
66
</svg></i></a>
77
`;
88

9-
exports[`renders ./components/dropdown/demo/context-menu.md correctly 1`] = `<span class="ant-dropdown-trigger" style="user-select: none;">Right Click on Me</span>`;
9+
exports[`renders ./components/dropdown/demo/context-menu.md correctly 1`] = `
10+
<div class="ant-dropdown-trigger" style="text-align: center; background: rgb(247, 247, 247); height: 200px; line-height: 200px; color: rgb(119, 119, 119);">
11+
Right Click on here
12+
</div>
13+
`;
1014

1115
exports[`renders ./components/dropdown/demo/dropdown-button.md correctly 1`] = `
1216
<div>
13-
<div class="ant-btn-group ant-dropdown-button"><button type="button" class="ant-btn ant-btn-default"><span>Dropdown</span></button><button type="button" class="ant-btn ant-btn-default ant-btn-icon-only ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
17+
<div class="ant-btn-group ant-dropdown-button"><button type="button" class="ant-btn ant-btn-default"><span>Dropdown</span></button><button type="button" class="ant-btn ant-btn-default ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
1418
<path d="M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z"></path>
1519
</svg></i></button></div>
16-
<div class="ant-btn-group ant-dropdown-button" style="margin-left: 8px;"><button disabled="disabled" type="button" class="ant-btn ant-btn-default"><span>Dropdown</span></button><button disabled="disabled" type="button" class="ant-btn ant-btn-default ant-btn-icon-only ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
20+
<div class="ant-btn-group ant-dropdown-button"><button type="button" class="ant-btn ant-btn-default"><span>Dropdown</span></button><button type="button" class="ant-btn ant-btn-default ant-dropdown-trigger"><i slot="icon" aria-label="icon: user" class="anticon anticon-user"><svg viewBox="64 64 896 896" data-icon="user" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
21+
<path d="M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"></path>
22+
</svg></i></button></div>
23+
<div class="ant-btn-group ant-dropdown-button" style="margin-left: 8px;"><button disabled="disabled" type="button" class="ant-btn ant-btn-default"><span>Dropdown</span></button><button disabled="disabled" type="button" class="ant-btn ant-btn-default ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
1724
<path d="M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z"></path>
1825
</svg></i></button></div> <button type="button" class="ant-btn ant-dropdown-trigger" style="margin-left: 8px;"><span>Button</span><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
1926
<path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`DropdownButton should support href like Button 1`] = `
4-
<div class="ant-btn-group ant-dropdown-button"><a href="https://ant.design" class="ant-btn ant-btn-default"></a><button type="button" class="ant-btn ant-btn-default ant-btn-icon-only ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
4+
<div class="ant-btn-group ant-dropdown-button"><a href="https://ant.design" class="ant-btn ant-btn-default"></a><button type="button" class="ant-btn ant-btn-default ant-dropdown-trigger"><i aria-label="icon: ellipsis" class="anticon anticon-ellipsis"><svg viewBox="64 64 896 896" data-icon="ellipsis" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class="">
55
<path d="M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z"></path>
66
</svg></i></button></div>
77
`;

components/dropdown/demo/context-menu.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,17 @@ The default trigger mode is `hover`, you can change it to `contextMenu`.
1111
```tpl
1212
<template>
1313
<a-dropdown :trigger="['contextmenu']">
14-
<span style="user-select: none">Right Click on Me</span>
14+
<div
15+
:style="{
16+
textAlign: 'center',
17+
background: '#f7f7f7',
18+
height: '200px',
19+
lineHeight: '200px',
20+
color: '#777',
21+
}"
22+
>
23+
Right Click on here
24+
</div>
1525
<a-menu slot="overlay">
1626
<a-menu-item key="1">1st menu item</a-menu-item>
1727
<a-menu-item key="2">2nd menu item</a-menu-item>

components/dropdown/demo/dropdown-button.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<cn>
22
#### 带下拉框的按钮
3-
左边是按钮,右边是额外的相关功能菜单。
3+
左边是按钮,右边是额外的相关功能菜单。可设置 `icon` 属性来修改右边的图标。
44
</cn>
55

66
<us>
77
#### Button with dropdown menu
8-
A button is on the left, and a related functional menu is on the right.
8+
A button is on the left, and a related functional menu is on the right. You can set the icon property to modify the icon of right.
99
</us>
1010

1111
```tpl
@@ -19,6 +19,15 @@ A button is on the left, and a related functional menu is on the right.
1919
<a-menu-item key="3"><a-icon type="user" />3rd item</a-menu-item>
2020
</a-menu>
2121
</a-dropdown-button>
22+
<a-dropdown-button>
23+
Dropdown
24+
<a-menu slot="overlay" @click="handleMenuClick">
25+
<a-menu-item key="1"><a-icon type="user" />1st menu item</a-menu-item>
26+
<a-menu-item key="2"><a-icon type="user" />2nd menu item</a-menu-item>
27+
<a-menu-item key="3"><a-icon type="user" />3rd item</a-menu-item>
28+
</a-menu>
29+
<a-icon slot="icon" type="user"/>
30+
</a-dropdown-button>
2231
<a-dropdown-button @click="handleButtonClick" disabled style="margin-left: 8px">
2332
Dropdown
2433
<a-menu slot="overlay" @click="handleMenuClick">

components/dropdown/demo/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const md = {
1919
us: `# Dropdown
2020
A dropdown list.
2121
## When To Use
22-
If there are too many operations to display, you can wrap them in a \`Dropdown\`. By clicking/hovering on the trigger, a dropdown menu should appear, which allows you to choose one option and execute relevant actions.
22+
When there are more than a few options to choose from, you can wrap them in a \`Dropdown\`. By hovering or clicking on the trigger, a dropdown menu will appear, which allows you to choose an option and execute the relevant action.
2323
## Examples
2424
`,
2525
};

components/dropdown/dropdown-button.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import PropTypes from '../_util/vue-types';
66
import { hasProp, getComponentFromProp } from '../_util/props-util';
77
import getDropdownProps from './getDropdownProps';
88
import { ConfigConsumerProps } from '../config-provider';
9+
import Icon from '../icon';
10+
911
const ButtonTypesProps = buttonTypes();
1012
const DropdownProps = getDropdownProps();
1113
const ButtonGroup = Button.Group;
@@ -19,6 +21,8 @@ const DropdownButtonProps = {
1921
disabled: PropTypes.bool,
2022
prefixCls: PropTypes.string,
2123
placement: DropdownProps.placement.def('bottomRight'),
24+
icon: PropTypes.any,
25+
title: PropTypes.string,
2226
};
2327
export { DropdownButtonProps };
2428
export default {
@@ -59,8 +63,10 @@ export default {
5963
placement,
6064
getPopupContainer,
6165
href,
66+
title,
6267
...restProps
6368
} = this.$props;
69+
const icon = getComponentFromProp(this, 'icon') || <Icon type="ellipsis" />;
6470
const { getPopupContainer: getContextPopupContainer } = this.configProvider;
6571
const getPrefixCls = this.configProvider.getPrefixCls;
6672
const prefixCls = getPrefixCls('dropdown-button', customizePrefixCls);
@@ -95,12 +101,13 @@ export default {
95101
onClick={this.onClick}
96102
htmlType={htmlType}
97103
href={href}
104+
title={title}
98105
>
99106
{this.$slots.default}
100107
</Button>
101108
<Dropdown {...dropdownProps}>
102109
<template slot="overlay">{getComponentFromProp(this, 'overlay')}</template>
103-
<Button type={type} disabled={disabled} icon="ellipsis" />
110+
<Button type={type}>{icon}</Button>
104111
</Dropdown>
105112
</ButtonGroup>
106113
);

components/dropdown/index.en-US.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,16 @@ You should use [Menu](/components/menu/) as `overlay`. The menu items and divide
2727
2828
### Dropdown.Button
2929

30-
| Property | Description | Type | Default |
31-
| --- | --- | --- | --- |
32-
| disabled | whether the dropdown menu is disabled | boolean | - |
33-
| overlay(slot-scope) | the dropdown menu | [Menu](/components/menu) | - |
34-
| placement | placement of pop menu: `bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` |
35-
| size | size of the button, the same as [Button](/components/button) | string | `default` |
36-
| trigger | the trigger mode which executes the drop-down action | Array&lt;`click`\|`hover`\|`contextmenu`> | `['hover']` |
37-
| type | type of the button, the same as [Button](/components/button) | string | `default` |
38-
| visible | whether the dropdown menu is visible | boolean | - |
30+
| Property | Description | Type | Default | Version |
31+
| --- | --- | --- | --- | --- |
32+
| disabled | whether the dropdown menu is disabled | boolean | - | |
33+
| icon | Icon (appears on the right) | vNode \| slot | - | 1.5.0 |
34+
| overlay(slot-scope) | the dropdown menu | [Menu](/components/menu) | - | |
35+
| placement | placement of pop menu: `bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` | |
36+
| size | size of the button, the same as [Button](/components/button) | string | `default` | |
37+
| trigger | the trigger mode which executes the drop-down action | Array&lt;`click`\|`hover`\|`contextmenu`> | `['hover']` | |
38+
| type | type of the button, the same as [Button](/components/button) | string | `default` | |
39+
| visible | whether the dropdown menu is visible | boolean | - | |
3940

4041
### Dropdown.Button events
4142

components/dropdown/index.zh-CN.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,16 @@
2727

2828
### Dropdown.Button
2929

30-
| 参数 | 说明 | 类型 | 默认值 |
31-
| --- | --- | --- | --- |
32-
| disabled | 菜单是否禁用 | boolean | - |
33-
| overlay(slot-scope) | 菜单 | [Menu](/components/menu-cn/) | - |
34-
| placement | 菜单弹出位置:`bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` |
35-
| size | 按钮大小,和 [Button](/components/button-cn/) 一致 | string | 'default' |
36-
| trigger | 触发下拉的行为 | Array&lt;`click`\|`hover`\|`contextmenu`> | `['hover']` |
37-
| type | 按钮类型,和 [Button](/components/button-cn/) 一致 | string | 'default' |
38-
| visible(v-model) | 菜单是否显示 | boolean | - |
30+
| 参数 | 说明 | 类型 | 默认值 | 版本 |
31+
| --- | --- | --- | --- | --- |
32+
| disabled | 菜单是否禁用 | boolean | - | |
33+
| icon | 右侧的 icon | VNode \| slot | - | 1.5.0 |
34+
| overlay(slot-scope) | 菜单 | [Menu](/components/menu-cn/) | - | |
35+
| placement | 菜单弹出位置:`bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` | |
36+
| size | 按钮大小,和 [Button](/components/button-cn/) 一致 | string | 'default' | |
37+
| trigger | 触发下拉的行为 | Array&lt;`click`\|`hover`\|`contextmenu`> | `['hover']` | |
38+
| type | 按钮类型,和 [Button](/components/button-cn/) 一致 | string | 'default' | |
39+
| visible(v-model) | 菜单是否显示 | boolean | - | |
3940

4041
### Dropdown.Button 事件
4142

types/dropdown/dropdown-button.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ export declare class DropdownButton extends AntdComponent {
5151
* @type boolean
5252
*/
5353
visible: boolean;
54+
icon: any;
55+
title: string;
5456
}

0 commit comments

Comments
 (0)