Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Modal): 修复Modal.show类型不存在问题 #825 #827

Merged
merged 87 commits into from May 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
a196114
feat(Table): Table 新增树形数据结构展示功能 #539
cuilanxin Mar 16, 2022
ba4173c
Merge branch 'master' of github.com:uiwjs/uiw
cuilanxin Mar 17, 2022
a9b9b5f
feat(Table): Table 新增支持 align 属性 className属性 #682
cuilanxin Mar 17, 2022
03bb855
Merge branch 'master' of github.com:uiwjs/uiw
cuilanxin Mar 17, 2022
ccf7d16
Merge branch 'master' of github.com:uiwjs/uiw
cuilanxin Mar 18, 2022
8a06082
feat(Table): Table 添加 scroll 属性,解决表格冗余 div #687
cuilanxin Mar 18, 2022
a11db86
feat(Table): Table 添加 scroll 属性,解决表格冗余 div #687
cuilanxin Mar 18, 2022
f064884
Merge branch 'uiwjs:master' into master
cuilanxin Mar 20, 2022
e0dded3
Merge branch 'uiwjs:master' into master
cuilanxin Mar 21, 2022
2bb39f9
feat(Table): Table 新增固定列属性
cuilanxin Mar 21, 2022
a86201e
feat(Table): Table 新增固定列属性
cuilanxin Mar 21, 2022
e825768
Merge branch 'master' of github.com:uiwjs/uiw
cuilanxin Mar 21, 2022
35816f7
doc(Table): Update README.md
cuilanxin Mar 21, 2022
86699f6
Merge branch 'master' of github.com:uiwjs/uiw
cuilanxin Mar 22, 2022
68f8262
update(Table): Table 支持树形数据显示和可展开同时出现
cuilanxin Mar 22, 2022
90b101f
Merge branch 'uiwjs:master' into master
cuilanxin Mar 22, 2022
a9d6ba7
Merge branch 'uiwjs:master' into master
cuilanxin Mar 23, 2022
fab96bd
fix(Table): 修复Table indentSize 传递0失效问题
cuilanxin Mar 23, 2022
fe440e6
Merge branch 'uiwjs:master' into master
cuilanxin Mar 23, 2022
343aef7
Merge branch 'uiwjs:master' into master
cuilanxin Mar 25, 2022
5a5bbdd
fix(Table): 修复 table fixed 不能对表头分组使用
cuilanxin Mar 25, 2022
2bab0b6
Merge branch 'uiwjs:master' into master
cuilanxin Mar 25, 2022
85bcab1
Merge branch 'uiwjs:master' into master
cuilanxin Mar 28, 2022
b5a2a04
Merge branch 'uiwjs:master' into master
cuilanxin Mar 28, 2022
980e4ec
Merge branch 'uiwjs:master' into master
cuilanxin Mar 30, 2022
2c9f85f
fix(Table): 修复table fix 在表头分组中fixed固定位置错误问题
cuilanxin Mar 30, 2022
f7d8831
fix(Table): 修复table fix 在表头分组中fixed固定位置错误问题
cuilanxin Mar 30, 2022
64da40d
fix(Table): 修复table fix 在表头分组中fixed固定位置错误问题
cuilanxin Mar 30, 2022
4ce3935
Merge branch 'uiwjs:master' into master
cuilanxin Apr 1, 2022
c6dd9b2
doc(Table): 增加Table可编辑,可编辑行例子
cuilanxin Apr 1, 2022
74d7bec
Merge branch 'uiwjs:master' into master
cuilanxin Apr 2, 2022
eb632e9
doc(Table): 更新table组件文档 可编辑行例子的错误
cuilanxin Apr 2, 2022
0cbe904
Merge branch 'uiwjs:master' into master
cuilanxin Apr 2, 2022
ac9facd
Merge branch 'uiwjs:master' into master
cuilanxin Apr 6, 2022
74f1b0c
Merge branch 'uiwjs:master' into master
cuilanxin Apr 6, 2022
e5dccf7
feat(Modal) fix(Overlay): 新增Modal.show()快速使用弹框功能,修复Overlay首次打开没有动画问题
cuilanxin Apr 6, 2022
a980dd8
feat(Modal) fix(Overlay): 新增Modal.show()快速使用弹框功能,修复Overlay首次打开没有动画问题
cuilanxin Apr 6, 2022
365dd47
feat(Modal) fix(Overlay): 新增Modal.show()快速使用弹框功能,修复Overlay首次打开没有动画问题
cuilanxin Apr 6, 2022
175344c
feat(Modal) fix(Overlay): 新增Modal.show()快速使用弹框功能,修复Overlay首次打开没有动画问题
cuilanxin Apr 6, 2022
05a9cd0
feat(Modal) fix(Overlay): 新增Modal.show()快速使用弹框功能,修复Overlay首次打开没有动画问题
cuilanxin Apr 6, 2022
4368c4c
Merge branch 'uiwjs:master' into master
cuilanxin Apr 6, 2022
fbd4e17
Merge branch 'uiwjs:master' into master
cuilanxin Apr 7, 2022
7cbd9b4
Merge branch 'uiwjs:master' into master
cuilanxin Apr 8, 2022
d6e3006
feat(Popover): 新增 Confirm 用法
cuilanxin Apr 8, 2022
18cdc9b
Merge branch 'uiwjs:master' into master
cuilanxin Apr 8, 2022
2870701
reactor(Table,Modal): 移除Table中使用的即将废弃的api, 优化Modal.show代码
cuilanxin Apr 8, 2022
3664370
reactor(Table): 移除Table中使用的即将废弃的api
cuilanxin Apr 8, 2022
72bb731
reactor(Modal): 优化 Modal.show 代码
cuilanxin Apr 8, 2022
82b2a93
reactor(Modal): 优化 Modal.show 代码
cuilanxin Apr 8, 2022
8c61c86
Merge branch 'uiwjs:master' into master
cuilanxin Apr 8, 2022
d0ecaf2
reactor(Modal): 优化 Modal.show 代码
cuilanxin Apr 8, 2022
4ae90d1
Merge branch 'uiwjs:master' into master
cuilanxin Apr 8, 2022
13a50b2
Merge branch 'uiwjs:master' into master
cuilanxin Apr 11, 2022
1909517
Merge branch 'uiwjs:master' into master
cuilanxin Apr 11, 2022
8a75b28
fix(Menu): 修复Menu 使用 React.StrictMode 报错问题
cuilanxin Apr 11, 2022
dae778a
Merge branch 'uiwjs:master' into master
cuilanxin Apr 12, 2022
f526481
fix(Overlay): 修复Overlay 始终拿不到node
cuilanxin Apr 12, 2022
fdb4482
Merge branch 'uiwjs:master' into master
cuilanxin Apr 12, 2022
50b9d3b
Merge branch 'uiwjs:master' into master
cuilanxin Apr 12, 2022
393538c
feat(Tree): 新增Tree组件 disabled 属性 #759
cuilanxin Apr 12, 2022
3a6a2c1
Merge branch 'uiwjs:master' into master
cuilanxin Apr 12, 2022
f9aecd3
fix(TreeChecked): 修复 TreeChecked 禁用后复选框没有禁用问题
cuilanxin Apr 12, 2022
84f2593
Merge branch 'uiwjs:master' into master
cuilanxin Apr 12, 2022
959d0a4
Merge branch 'uiwjs:master' into master
cuilanxin Apr 15, 2022
b777a82
fix(Table): 修复Empty 在表格中未沾满tbody问题 #768
cuilanxin Apr 15, 2022
6b3a91a
Merge branch 'uiwjs:master' into master
cuilanxin Apr 15, 2022
098a557
Merge branch 'uiwjs:master' into master
cuilanxin Apr 15, 2022
420fd58
Merge branch 'uiwjs:master' into master
cuilanxin Apr 18, 2022
9330cf1
fix(Menu): 修复展开子菜单收起的时候没有动画 #774
cuilanxin Apr 18, 2022
8c9c0aa
Merge branch 'uiwjs:master' into master
cuilanxin Apr 19, 2022
d94bfab
Merge branch 'uiwjs:master' into master
cuilanxin Apr 20, 2022
9f40088
fix(Menu): 修复当嵌套多个子菜单时,会有遮住子菜单问题 # 779
cuilanxin Apr 22, 2022
ca6e648
Merge branch 'uiwjs:master' into master
cuilanxin Apr 24, 2022
0af7a7d
Merge branch 'uiwjs:master' into master
cuilanxin Apr 26, 2022
3a2b7fb
fix(Menu): fix(Menu): 修复当嵌套多个子菜单时,会有遮住子菜单问题 # 779
cuilanxin Apr 26, 2022
03c95d0
Merge branch 'uiwjs:master' into master
cuilanxin Apr 27, 2022
f7dc250
Merge branch 'uiwjs:master' into master
cuilanxin Apr 28, 2022
b3f108f
fix(Tabs): 修复Tabs组件嵌套使用Tabs时,type属性会失效问题 #796
cuilanxin Apr 28, 2022
f70ef43
Merge branch 'uiwjs:master' into master
cuilanxin Apr 29, 2022
8c111ea
fix(SearchSelect): 修复SearchSelect使用多选属性时,禁用样式问题 #789
cuilanxin Apr 29, 2022
9156aad
Merge branch 'uiwjs:master' into master
cuilanxin Apr 29, 2022
2d2bb27
Merge branch 'uiwjs:master' into master
cuilanxin May 5, 2022
8aa0dbd
refactor(Tabs): 替换tabs 的css选择器,解决外层type的样式也会加到内层中 #796
cuilanxin May 5, 2022
038d34a
Merge branch 'uiwjs:master' into master
cuilanxin May 6, 2022
5a97756
Merge branch 'uiwjs:master' into master
cuilanxin May 11, 2022
9ddc22e
Merge branch 'uiwjs:master' into master
cuilanxin May 11, 2022
e986764
fix(Modal): 修复Modal.show类型不存在问题 #825
cuilanxin May 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/react-modal/src/CallShow.tsx
Expand Up @@ -2,8 +2,8 @@ import React from 'react';
import ReactDOM from 'react-dom';
import Modal, { ModalProps } from './';

export default function CallShow(props: Omit<ModalProps, 'onClosed' | 'isOpen'> & { children: React.ReactNode }) {
const { title = '提示框', children, ...other } = props;
export default function CallShow(props?: Omit<ModalProps, 'onClosed' | 'isOpen'> & { children?: React.ReactNode }) {
const { title = '提示框', children, ...other } = props || {};
const dv = document.createElement('div');
dv.id = 'uiw-modal-call-show-element';
document.body.appendChild(dv);
Expand Down
211 changes: 106 additions & 105 deletions packages/react-modal/src/index.tsx
Expand Up @@ -28,113 +28,114 @@ export interface ModalProps extends IProps, OverlayProps {
onConfirm?: (evn: React.MouseEvent<HTMLButtonElement> & MouseEvent) => void;
}

type ShowModalProps = {
show?: (props: Omit<ModalProps, 'onClosed' | 'isOpen'> & { children: React.ReactNode }) => void;
};

const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<OverlayProps>> & ShowModalProps =
React.forwardRef<OverlayProps, ModalProps>((props, ref) => {
const {
prefixCls = 'w-modal',
className,
children,
useButton = true,
usePortal = true,
autoFocus = false,
isOpen: _ = false,
title,
cancelText,
cancelButtonProps,
confirmButtonProps,
content,
confirmText = '确认',
type = 'light',
icon,
maxWidth = 500,
minWidth = 320,
width,
isCloseButtonShown = true,
onCancel = noop,
onConfirm = noop,
bodyStyle,
...other
} = props;
const [isOpen, setIsOpen] = useState(props.isOpen);
useEffect(() => {
if (props.isOpen !== isOpen) {
setIsOpen(props.isOpen);
}
}, [props.isOpen]);

const [loading, setLoading] = useState(false);
const cls = [prefixCls, className, type ? `${type}` : null].filter(Boolean).join(' ').trim();
function onClose() {
setIsOpen(false);
}
async function handleCancel(e: React.MouseEvent<HTMLButtonElement, MouseEvent> & MouseEvent) {
setLoading(true);
try {
onCancel && (await onCancel(e));
} catch (e) {}
setIsOpen(false);
setLoading(false);
}
async function handleConfirm(e: React.MouseEvent<HTMLButtonElement, MouseEvent> & MouseEvent) {
setLoading(true);
try {
onConfirm && (await onConfirm(e));
} catch (e) {}
setIsOpen(false);
setLoading(false);
const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<OverlayProps>> = React.forwardRef<
OverlayProps,
ModalProps
>((props, ref) => {
const {
prefixCls = 'w-modal',
className,
children,
useButton = true,
usePortal = true,
autoFocus = false,
isOpen: _ = false,
title,
cancelText,
cancelButtonProps,
confirmButtonProps,
content,
confirmText = '确认',
type = 'light',
icon,
maxWidth = 500,
minWidth = 320,
width,
isCloseButtonShown = true,
onCancel = noop,
onConfirm = noop,
bodyStyle,
...other
} = props;
const [isOpen, setIsOpen] = useState(props.isOpen);
useEffect(() => {
if (props.isOpen !== isOpen) {
setIsOpen(props.isOpen);
}
return (
<Overlay usePortal={usePortal} isOpen={isOpen} {...other} onClose={onClose} className={cls}>
<div className={`${prefixCls}-container`}>
<div
className={[
`${prefixCls}-inner`,
title ? `${prefixCls}-shown-title` : null,
icon ? `${prefixCls}-shown-icon` : null,
]
.filter(Boolean)
.join(' ')
.trim()}
style={{ maxWidth, minWidth, width }}
>
{(title || icon) && (
<div className={`${prefixCls}-header`}>
{icon && <Icon type={icon} />}
{title && <h4>{title}</h4>}
{isCloseButtonShown && <Button basic onClick={(e) => handleCancel(e)} icon="close" type="light" />}
</div>
)}
<div className={`${prefixCls}-body`} style={bodyStyle}>
{children || content}
}, [props.isOpen]);

const [loading, setLoading] = useState(false);
const cls = [prefixCls, className, type ? `${type}` : null].filter(Boolean).join(' ').trim();
function onClose() {
setIsOpen(false);
}
async function handleCancel(e: React.MouseEvent<HTMLButtonElement, MouseEvent> & MouseEvent) {
setLoading(true);
try {
onCancel && (await onCancel(e));
} catch (e) {}
setIsOpen(false);
setLoading(false);
}
async function handleConfirm(e: React.MouseEvent<HTMLButtonElement, MouseEvent> & MouseEvent) {
setLoading(true);
try {
onConfirm && (await onConfirm(e));
} catch (e) {}
setIsOpen(false);
setLoading(false);
}
return (
<Overlay usePortal={usePortal} isOpen={isOpen} {...other} onClose={onClose} className={cls}>
<div className={`${prefixCls}-container`}>
<div
className={[
`${prefixCls}-inner`,
title ? `${prefixCls}-shown-title` : null,
icon ? `${prefixCls}-shown-icon` : null,
]
.filter(Boolean)
.join(' ')
.trim()}
style={{ maxWidth, minWidth, width }}
>
{(title || icon) && (
<div className={`${prefixCls}-header`}>
{icon && <Icon type={icon} />}
{title && <h4>{title}</h4>}
{isCloseButtonShown && <Button basic onClick={(e) => handleCancel(e)} icon="close" type="light" />}
</div>
{useButton && (
<div className={`${prefixCls}-footer`}>
<Button
autoFocus={autoFocus}
type={type}
loading={loading}
disabled={loading}
{...confirmButtonProps}
onClick={(e) => handleConfirm(e)}
>
{confirmText}
</Button>
{cancelText && (
<Button {...cancelButtonProps} onClick={(e) => handleCancel(e)}>
{cancelText}
</Button>
)}
</div>
)}
)}
<div className={`${prefixCls}-body`} style={bodyStyle}>
{children || content}
</div>
{useButton && (
<div className={`${prefixCls}-footer`}>
<Button
autoFocus={autoFocus}
type={type}
loading={loading}
disabled={loading}
{...confirmButtonProps}
onClick={(e) => handleConfirm(e)}
>
{confirmText}
</Button>
{cancelText && (
<Button {...cancelButtonProps} onClick={(e) => handleCancel(e)}>
{cancelText}
</Button>
)}
</div>
)}
</div>
</Overlay>
);
});
</div>
</Overlay>
);
});

Modal.show = CallShow;
export default Modal;
type Modal = typeof Modal & {
show: (props?: Omit<ModalProps, 'onClosed' | 'isOpen'> & { children?: React.ReactNode }) => void;
};
(Modal as Modal).show = CallShow;
export default Modal as Modal;