Skip to content

Commit ef99b7f

Browse files
hoshinogami1360151219
andauthored
Modal (#25)
* init modal * feat:添加modalprops * feat:modal * feat:add dragge * style:close icon * fix:dragge fuction * fix:skeleton li style effect gloal * fix:change close icon * fix:change close icon * fix;button disabled prevent default * feat: add modal dragge * feat: add modal dragge * fix:modal dragge position not update * feat:add useModal * feat:useModal Modalcancel and modalok * feat:add description * chore: (Modal)remove useless * chore: (Modal)type * fix:card line-height problem * fix:card mdx * chore: [Modal]样式、文档优化 * feat: [Modal]props优化 --------- Co-authored-by: 1360151219 <[email protected]>
1 parent a3f6319 commit ef99b7f

File tree

22 files changed

+582
-37
lines changed

22 files changed

+582
-37
lines changed

packages/demo/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,4 @@ ReactDom.createRoot(document.getElementById('root') as HTMLElement).render(
2323
<App />
2424
</AutoScrollToTop>
2525
</HashRouter>
26-
2726
);

packages/demo/src/components/Card/index.mdx

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ import Actions from './svg/index.tsx';
22
import More from './svg/tab.tsx';
33

44
# Card
5-
6-
<div className="title">默认样式</div>
5+
通用卡片容器
6+
## 默认样式
7+
一个简单的卡片用法。
78
<CodeBlock line={'5-7'}>
89
<Card title={<div>测试</div>} time="19:20 2020-09-15" extra={<More />} actions={<Actions></Actions>}>
910
<div>
1011
<p>我好想买Airpods但是没有钱,梁老师可不可以资助我 一点钱钱呢啊?不多不多的 </p>
1112
</div>
1213
</Card>
1314
</CodeBlock>
14-
<div className="title">带头像</div>
15+
## 带头像
16+
通过avatar属性来添加头像。
1517
<CodeBlock line={'5-7'}>
1618
<Card
1719
title={<div>多余文本</div>}
@@ -29,8 +31,8 @@ import More from './svg/tab.tsx';
2931
梁老师可不可以资助我一点钱钱呢啊? 不多不多的, 球球了!我好想买Airpods但是没有钱,梁老师可
3032
</Card>
3133
</CodeBlock>
32-
33-
<div className="title">栅格</div>
34+
## 栅格
35+
利用Grid属性,实现栅格布局。
3436
<CodeBlock line={'5-7'}>
3537
<Card
3638
avatar={<img src="https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png" width="35" height="35" />}
@@ -48,15 +50,16 @@ import More from './svg/tab.tsx';
4850
<div>足球</div>
4951
</Card>
5052
</CodeBlock>
51-
<div className="title">收起与展开长度</div>
53+
## 收起与展开长度
54+
通过css变量实现展示内容的长度。
5255
<CodeBlock line={'5-7'}>
5356
<Card
5457
title={<div>多余文本</div>}
5558
time="19:20 2020-09-15"
5659
extra={<More />}
5760
avatar={<img src="https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png" width="35" height="35" />}
5861
actions={<Actions />}
59-
style={{ '--card-minLength': '5' }}
62+
style={{ '--card-minLength': 5 }}
6063
>
6164
我好想买Airpods但是没有钱,梁老师可不可以资助我 我好想买Airpods但是没有钱,梁老师可不可以资助我一点钱钱呢
6265
啊?不多不多的,球球了!我好想买Airpods但 是没有钱,梁老师可不可以资助我一点钱钱呢啊?不多不多的,
@@ -72,7 +75,7 @@ import More from './svg/tab.tsx';
7275
extra={<More />}
7376
avatar={<img src="https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png" width="35" height="35" />}
7477
actions={<Actions />}
75-
style={{ '--card-maxLength': '7' }}
78+
style={{ '--card-maxLength': 7 }}
7679
>
7780
我好想买Airpods但是没有钱,梁老师可不可以资助我 我好想买Airpods但是没有钱,梁老师可不可以资助我一点钱钱呢
7881
啊?不多不多的,球球了!我好想买Airpods但 是没有钱,梁老师可不可以资助我一点钱钱呢啊?不多不多的,
@@ -83,7 +86,8 @@ import More from './svg/tab.tsx';
8386
梁老师可不可以资助我一点钱钱呢啊?不多不多的,球球了! 我好想买Airpods但是没有钱,梁老师可
8487
</Card>
8588
</CodeBlock>
86-
<div className="title">自定义背景色和宽度</div>
89+
## 自定义背景颜色和宽度
90+
自定义更改卡片的样式。
8791
<CodeBlock line={'5-7'}>
8892
<Card
8993
title={<div>多余文本</div>}
@@ -101,7 +105,8 @@ import More from './svg/tab.tsx';
101105
</Card>
102106
</CodeBlock>
103107

104-
<div className="title">加载中</div>
108+
## 加载中
109+
数据读入前会有文本块样式。
105110
<CodeBlock line={'5-7'}>
106111
<Loading />
107112
</CodeBlock>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Button, Modal } from 'pivot-design';
2+
import React, { useState } from 'react';
3+
const App: React.FC = () => {
4+
const [open, setOpen] = useState(false);
5+
const onchange = () => {
6+
setOpen(true);
7+
};
8+
const onOk = () => {
9+
setOpen(false);
10+
};
11+
const onCancel = () => {
12+
setOpen(false);
13+
};
14+
return (
15+
<>
16+
<Modal title="这是" open={open} onOk={onOk} onCancel={onCancel}>
17+
h1这是内容
18+
</Modal>
19+
<Button onClick={onchange}>按钮</Button>
20+
</>
21+
);
22+
};
23+
export default App;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Button, Modal } from 'pivot-design';
2+
import React, { useState } from 'react';
3+
const App: React.FC = () => {
4+
const [open, setOpen] = useState(false);
5+
const onchange = () => {
6+
setOpen(true);
7+
};
8+
const onOk = () => {
9+
setOpen(false);
10+
};
11+
const onCancel = () => {
12+
setOpen(false);
13+
};
14+
return (
15+
<>
16+
<Modal
17+
title="这是"
18+
content="Hello world"
19+
open={open}
20+
onOk={onOk}
21+
onCancel={onCancel}
22+
footerButtonDirection={'col'}
23+
cancelButtonProps={{ disabled: true }}
24+
>
25+
<p>h1这是内容</p>
26+
</Modal>
27+
<Button onClick={onchange}>竖版</Button>
28+
</>
29+
);
30+
};
31+
export default App;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { Button, Modal } from 'pivot-design';
2+
import React, { useState } from 'react';
3+
const App: React.FC = () => {
4+
const [openOne, setOpenOne] = useState(false);
5+
const [openSecond, setOpenSecond] = useState(false);
6+
const onchangeOne = () => {
7+
setOpenOne(true);
8+
};
9+
const onOkOne = () => {
10+
setOpenOne(false);
11+
};
12+
const onCancelOne = () => {
13+
setOpenOne(false);
14+
};
15+
16+
const onchangeSecond = () => {
17+
setOpenSecond(true);
18+
};
19+
20+
const onCancelSecond = () => {
21+
setOpenSecond(false);
22+
};
23+
return (
24+
<>
25+
<Modal title="没有蒙层的模态框" open={openOne} onOk={onOkOne} onCancel={onCancelOne} hasMask={false}>
26+
没有蒙层
27+
</Modal>
28+
<Button onClick={onchangeOne}>没有蒙层</Button>
29+
30+
<Modal
31+
title="点击蒙层不会消失的模态框"
32+
open={openSecond}
33+
onCancel={onCancelSecond}
34+
maskClosable={false}
35+
hasMask={true}
36+
>
37+
点击蒙层不会消失的模态框
38+
</Modal>
39+
<Button onClick={onchangeSecond}>点击蒙层</Button>
40+
</>
41+
);
42+
};
43+
export default App;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Button, Modal } from 'pivot-design';
2+
import React, { useState } from 'react';
3+
const App: React.FC = () => {
4+
const [open, setOpen] = useState(false);
5+
const onchange = () => {
6+
setOpen(true);
7+
};
8+
const onOk = () => {
9+
setOpen(false);
10+
};
11+
const onCancel = () => {
12+
setOpen(false);
13+
};
14+
return (
15+
<>
16+
<Modal title="模态框" open={open} onOk={onOk} onCancel={onCancel} position={{ x: 0, y: 100 }}>
17+
<p>h1这是内容</p>
18+
</Modal>
19+
<Button onClick={onchange}>按钮</Button>
20+
</>
21+
);
22+
};
23+
export default App;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Button, Modal } from 'pivot-design';
2+
import React from 'react';
3+
4+
const App: React.FC = () => {
5+
return (
6+
<Button
7+
onClick={() => {
8+
Modal.show({
9+
title: 'Modal',
10+
children: 'show调起的对话框',
11+
});
12+
}}
13+
>
14+
Show
15+
</Button>
16+
);
17+
};
18+
export default App;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Modal
2+
3+
模态对话框组件,用于展示需要用户确认的重要信息。
4+
5+
## 基本用法
6+
7+
最基本的模态对话框用法
8+
9+
<CodeBlock line={'5-7'}>
10+
<Common />
11+
</CodeBlock>
12+
13+
## 底部按钮组定制
14+
15+
提供自定义底部按钮,可以通过 `OkButtonProps``cancelButtonProps` 控制 Button,还可以传入 `footer` 来自定义模态框的底部。
16+
17+
<CodeBlock line={'7-11'}>
18+
<FooterRow />
19+
</CodeBlock>
20+
21+
## 弹窗出现位置
22+
23+
通过 `position` 属性,从而改变模态框的出现位置。
24+
25+
<CodeBlock line={'7-11'}>
26+
<Position />
27+
</CodeBlock>
28+
29+
## 蒙层动作自定义
30+
31+
你可以通过给 `hasMask` 传入 `false` 来关闭模态框的蒙层。
32+
33+
<CodeBlock line={'7-11'}>
34+
<Mask />
35+
</CodeBlock>
36+
37+
## 声明式调用
38+
39+
你可以使用 `Modal.show(props)` 的方式来调起一个模态框。
40+
41+
<CodeBlock line={'7-11'}>
42+
<UseModal />
43+
</CodeBlock>

packages/demo/src/components/Skeleton/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@
1919
<div className="title">静态</div>
2020
<CodeBlock line={'5-7'}>
2121
<Skeleton style={{width:"380px",'--skeleton-active':'false'}}></Skeleton>
22-
</CodeBlock>
22+
</CodeBlock>

packages/demo/src/pages/component/index.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import { useState } from 'react';
2-
import { Button, Icon, Input, Skeleton, Card, Popover } from 'pivot-design';
2+
import { Button, Icon, Input, Skeleton, Card, Popover, Modal } from 'pivot-design';
33
// import router from '@/routers';
44
import ButtonMdx from '../../components/Button/index.mdx';
55
import IconMdx from '../../components/Icon/index.mdx';
66
import InputMdx from '../../components/Input/index.mdx';
77
import CardMdx from '../../components/Card/index.mdx';
88
import SkeletonMdx from '../../components/Skeleton/index.mdx';
9+
//import PopoverMdx from '@/components/Popover/index.mdx';
10+
import ModalMdx from '../../components/Modal/index.mdx';
911
import PopoverMdx from '../../components/Popover/index.mdx';
1012
import './index.scss';
1113

1214
import Draggable from '@/examples/Draggable/Draggable';
1315
import CodeBlock from '@/components/_CodeBlock/codeBlock';
1416

1517
function Index() {
16-
const [select, setSelect] = useState('Draggable');
18+
const [select, setSelect] = useState('Modal');
1719
const demoSelect = () => {
1820
return (
1921
<div className="demo-container">
@@ -38,6 +40,9 @@ function Index() {
3840
<div className={`demo-item ${select === 'Popover' ? 'active' : ''}`} onClick={() => setSelect('Popover')}>
3941
气泡
4042
</div>
43+
<div className={`demo-item ${select === 'Modal' ? 'active' : ''}`} onClick={() => setSelect('Modal')}>
44+
弹窗
45+
</div>
4146
</div>
4247
);
4348
};
@@ -53,8 +58,11 @@ function Index() {
5358
{select === 'Popover' ? <PopoverMdx components={{ Popover, CodeBlock }} /> : null}
5459
{select === 'Draggable' ? <Draggable /> : null}
5560
{select === 'Skeleton' ? <SkeletonMdx components={{ Skeleton, CodeBlock }} /> : null}
61+
{select === 'Modal' ? <ModalMdx components={{ Modal, CodeBlock }} /> : null}
62+
</div>
63+
<div className="demo-component-catalogue" style={{ width: '200px' }}>
64+
1
5665
</div>
57-
<div className="demo-component-catalogue" style={{ width: '200px' }}>1</div>
5866
</div>
5967
);
6068
}

0 commit comments

Comments
 (0)