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} >