Skip to content

Commit 5ccc02e

Browse files
author
liyuan-meng
committed
[CDropdown] UI 升级(客户视图使用)
1 parent a597947 commit 5ccc02e

9 files changed

Lines changed: 255 additions & 74 deletions

File tree

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
order: 1
3+
title: 下拉菜单选择器(新)
4+
desc: 基本用法。
5+
---
6+
7+
```jsx
8+
9+
/**
10+
* title: 下拉菜单选择器(新)
11+
* desc: 展示箭头
12+
*/
13+
import React, { useState } from 'react';
14+
import {
15+
CDropdown as Dropdown,
16+
Icon,
17+
CMenu as Menu,
18+
Button,
19+
Message
20+
} from 'cloud-react';
21+
22+
const { Item } = Menu;
23+
24+
class DropdownDemo extends React.Component {
25+
26+
handleMenuClick = key => {
27+
Message.success(`菜单Item onClick ${key}`);
28+
}
29+
30+
onOpenChange = e => {
31+
console.log(`收缩、展开 ${e}`);
32+
Message.success(`收缩、展开 ${e}`);
33+
}
34+
35+
render() {
36+
// 'bottom', 'bottomLeft', 'bottomRight', 'top', 'topLeft', 'topRight'。
37+
const style = { display: 'flex', gap: '30px', flexWrap: 'wrap' };
38+
const overlay = (
39+
<Dropdown.Menu onClick={this.handleMenuClick}>
40+
<Dropdown.Item icon={<Icon type="shop-line"/>} id="tenement">租户</Dropdown.Item>
41+
<Dropdown.Item icon={<Icon type="people"/>} id="client">客户</Dropdown.Item>
42+
<Dropdown.Item icon={<Icon type="group"/>} id="clientBase">客户群</Dropdown.Item>
43+
</Dropdown.Menu>
44+
);
45+
return (
46+
<div style={style}>
47+
<Dropdown
48+
arrow
49+
overlay={overlay}
50+
placement="bottom">
51+
<Button type="normal">向下</Button>
52+
</Dropdown>
53+
<Dropdown
54+
arrow
55+
overlay={overlay}
56+
placement="bottomLeft">
57+
<Button type="normal">向左下</Button>
58+
</Dropdown>
59+
<Dropdown
60+
arrow
61+
overlay={overlay}
62+
placement="bottomRight">
63+
<Button type="normal">向右下</Button>
64+
</Dropdown>
65+
<Dropdown
66+
arrow
67+
overlay={overlay}
68+
placement="top">
69+
<Button type="normal">向上</Button>
70+
</Dropdown>
71+
<Dropdown
72+
arrow
73+
overlay={overlay}
74+
placement="topLeft">
75+
<Button type="normal">向左上</Button>
76+
</Dropdown>
77+
<Dropdown
78+
arrow
79+
overlay={overlay}
80+
placement="topRight">
81+
<Button type="normal">向右上</Button>
82+
</Dropdown>
83+
</div>
84+
);
85+
}
86+
}
87+
export default DropdownDemo;
88+
```

src/components/c-dropdown/demos/placement.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import {
1515
CDropdown as Dropdown,
1616
Icon,
1717
CMenu as Menu,
18-
Button
18+
Button,
19+
Message
1920
} from 'cloud-react';
2021

2122
const { Item } = Menu;
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
order: 1
3+
title: 下拉菜单选择器(新)
4+
desc: 基本用法。
5+
---
6+
7+
```jsx
8+
9+
import React, { useState } from 'react';
10+
import {
11+
CDropdown as Dropdown,
12+
Icon,
13+
CMenu as Menu,
14+
Message
15+
} from 'cloud-react';
16+
17+
const { Item } = Menu;
18+
19+
const dataList = [
20+
{ label: '租户', id: '1' },
21+
{ label: '客户', id: '2' },
22+
{ label: '店铺', id: '3' },
23+
];
24+
25+
class DropdownDemo extends React.Component {
26+
27+
state = {
28+
checkedId: '1',
29+
};
30+
31+
render() {
32+
const overlay = (
33+
<Dropdown.Menu checkedId={this.state.checkedId} onClick={id => {
34+
this.setState({ checkedId: id })
35+
}}>
36+
{dataList.map(item => (
37+
<Dropdown.Item key={item.id} id={item.id}>{item.label}</Dropdown.Item>
38+
))}
39+
</Dropdown.Menu>
40+
);
41+
return (
42+
<Dropdown
43+
// arrow
44+
placement="bottom"
45+
overlay={overlay}
46+
trigger={['click']}>
47+
<div>
48+
<span>{dataList.find(item => item.id === this.state.checkedId)?.label || '点击展示'}</span>
49+
<Icon type="down" />
50+
</div>
51+
</Dropdown>
52+
);
53+
}
54+
}
55+
56+
export default DropdownDemo;
57+
```

src/components/c-dropdown/demos/simple.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class DropdownDemo extends React.Component {
4949
</Dropdown.Menu>
5050
}>
5151
<div>
52-
<span>基础下拉菜单</span>
52+
<span>基础下拉菜单,带分割线</span>
5353
<Icon type="down" />
5454
</div>
5555
</Dropdown>

src/components/c-dropdown/dropdowns/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function Dropdown(props) {
6161
};
6262

6363
const dropdownTrigger = cloneElement(children, {
64-
className: classNames(`${prefixCls}-dropdowns`, className),
64+
className: classNames(`${prefixCls}-dropdowns`, className, children?.props?.className),
6565
disabled,
6666
});
6767

src/components/c-dropdown/dropdowns/item.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react';
22
import classNames from 'classnames';
33
import { prefixCls } from '@utils';
44
import 'rc-dropdown/assets/index.css';
5+
import Icon from '../../icon';
56

67
function DropdownItem(props) {
78
const {
@@ -12,6 +13,7 @@ function DropdownItem(props) {
1213
className,
1314
type,
1415
id,
16+
checkedId,
1517
...restProps
1618
} = props;
1719

@@ -30,12 +32,19 @@ function DropdownItem(props) {
3032
[`${prefixCls}-dropdowns-menu-item`]: true,
3133
[className]: className || '',
3234
disabled: !!disabled,
35+
'menu-item-checked': checkedId && props.id === checkedId,
3336
})}
3437
onClick={() => handleClickItem(id)}
3538
{...restProps}
3639
>
3740
{icon && icon}
3841
{children}
42+
{checkedId && props.id === checkedId && (
43+
<Icon
44+
type="finish"
45+
className="menu-item-checked-icon"
46+
/>
47+
)}
3948
</div>
4049
);
4150

src/components/c-dropdown/dropdowns/menu.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import { prefixCls } from '@utils';
44
import 'rc-dropdown/assets/index.css';
55

66
function DropdownMenu(props) {
7-
const { children, className, restProps } = props;
7+
const { children, className, checkedId, style, restProps } = props;
88

99
return (
1010
<div
1111
className={classNames(`${prefixCls}-dropdowns-menu`, className)}
12+
style={style || {}}
1213
{...restProps}
1314
>
1415
{Children.map(children, (child) => cloneElement(child, {
16+
checkedId,
1517
onClick(key) {
1618
if (typeof props.onClick === 'function') {
1719
props.onClick(key);

0 commit comments

Comments
 (0)