diff --git a/lerna.json b/lerna.json
index 398675bc0..dbaa288d9 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "packages": ["packages/*"],
+ "workspaces": ["packages/*"],
"version": "independent",
"command": {
"publish": {
diff --git a/packages/zarm/src/modal/demo.md b/packages/zarm/src/modal/demo.md
index 182ae301b..de0aaf485 100644
--- a/packages/zarm/src/modal/demo.md
+++ b/packages/zarm/src/modal/demo.md
@@ -26,6 +26,9 @@ const initState = {
customContainer: {
visible: false,
},
+ overlength: {
+ visible: false,
+ },
};
const reducer = (state, action) => {
@@ -140,6 +143,15 @@ const Demo = () => {
>
挂载到指定 DOM 节点
+ toggle('overlength')}>
+ 开启
+
+ }
+ >
+ 超长内容
+
@@ -192,6 +204,21 @@ const Demo = () => {
>
挂载到指定dom节点
+
+ toggle('overlength')}
+ maskClosable
+ >
+ {Array.from(Array(100).fill(0)).map((_, index) => (
+
+ 模态框内容
+
+
+ ))}
+
>
);
};
@@ -454,24 +481,24 @@ const confirm = Modal.confirm({
## CSS 变量
-| 属性 | 默认值 | 说明 |
-| :------------------------------- | :---------------------------------- | :------------------- |
-| --background | 'rgb(242, 242, 242)' | 背景色 |
-| --border-radius | '14px' | 圆角大小 |
-| --shadow | '0 7px 21px var(--za-color-shadow)' | 阴影样式 |
-| --title-font-size | '17px' | 标题字体大小 |
-| --title-font-weight | 500 | 标题字体粗细 |
-| --title-text-color | 'var(--za-color-text)' | 标题字体颜色 |
-| --close-size | '20px' | 关闭图标字体大小 |
-| --close-color | '#ccc' | 关闭图标颜色 |
-| --close-active-color | '#999' | 关闭图标激活状态颜色 |
-| --body-font-size | '13px' | 内容字体大小 |
-| --body-text-color | 'var(--za-color-text)' | 内容字体颜色 |
-| --body-padding | '16px' | 内容内边距 |
-| --button-background | 'transparent' | 操作按钮背景 |
-| --button-height | '44px' | 操作按钮高度 |
-| --button-font-size | '17px' | 操作按钮字体大小 |
-| --button-font-weight | 500 | 操作按钮字体粗细 |
-| --button-text-color | 'var(--za-theme-primary)' | 操作按钮字体颜色 |
-| --button-active-background | 'var(--za-background-active)' | 操作按钮选中背景 |
-| --button-disabled-opacity | 'var(--za-opacity-disabled)' | 操作按钮禁用状态时的透明度 |
+| 属性 | 默认值 | 说明 |
+| :------------------------- | :---------------------------------- | :------------------------- |
+| --background | 'rgb(242, 242, 242)' | 背景色 |
+| --border-radius | '14px' | 圆角大小 |
+| --shadow | '0 7px 21px var(--za-color-shadow)' | 阴影样式 |
+| --title-font-size | '17px' | 标题字体大小 |
+| --title-font-weight | 500 | 标题字体粗细 |
+| --title-text-color | 'var(--za-color-text)' | 标题字体颜色 |
+| --close-size | '20px' | 关闭图标字体大小 |
+| --close-color | '#ccc' | 关闭图标颜色 |
+| --close-active-color | '#999' | 关闭图标激活状态颜色 |
+| --body-font-size | '13px' | 内容字体大小 |
+| --body-text-color | 'var(--za-color-text)' | 内容字体颜色 |
+| --body-padding | '16px' | 内容内边距 |
+| --button-background | 'transparent' | 操作按钮背景 |
+| --button-height | '44px' | 操作按钮高度 |
+| --button-font-size | '17px' | 操作按钮字体大小 |
+| --button-font-weight | 500 | 操作按钮字体粗细 |
+| --button-text-color | 'var(--za-theme-primary)' | 操作按钮字体颜色 |
+| --button-active-background | 'var(--za-background-active)' | 操作按钮选中背景 |
+| --button-disabled-opacity | 'var(--za-opacity-disabled)' | 操作按钮禁用状态时的透明度 |
diff --git a/packages/zarm/src/popup/Popup.tsx b/packages/zarm/src/popup/Popup.tsx
index 190f5cfb9..dd127dc8b 100644
--- a/packages/zarm/src/popup/Popup.tsx
+++ b/packages/zarm/src/popup/Popup.tsx
@@ -44,6 +44,8 @@ const Popup = React.forwardRef((props, ref) => {
} = props;
const { prefixCls, mountContainer: globalMountContainer } = React.useContext(ConfigContext);
+ const nodeRef = React.useRef(null);
+ const maskRef = React.useRef(null);
const bem = createBEM('popup', { prefixCls });
useLockScroll(visible! && lockScroll!);
@@ -52,12 +54,22 @@ const Popup = React.forwardRef((props, ref) => {
onEsc?.();
}, []);
+ const handleClick = (event: React.MouseEvent) => {
+ if (nodeRef.current !== event.target && nodeRef.current.contains(event.target as HTMLElement)) {
+ return;
+ }
+ maskRef.current?.click();
+ };
+
const transitionName = animationType ?? TRANSITION_NAMES[direction!];
+ React.useImperativeHandle(ref, () => nodeRef.current);
+
return (
{mask && (
((props, ref) => {
/>
)}
((props, ref) => {
const { display, ...restStyle } = style;
return renderToContainer(
props.mountContainer ?? globalMountContainer,
-
+
((props, ref) => {
}}
maskColor={maskColor}
lockScroll={!maskClickable}
+ className={bem('wrapper')}
{...rest}
>