Skip to content

Commit 8dead40

Browse files
committed
fix(drawer/modal): fix banner ts error in drawer/modal
fix #601
1 parent 5fe556b commit 8dead40

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

src/drawer/index.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import classNames from 'classnames';
55
import { omit } from 'lodash-es';
66
import RcDrawer, { DrawerProps as AntdDrawerProps } from 'rc-drawer';
77

8+
import { isAlertObjectProps } from '../utils';
89
import motionProps from './motion';
910
import './style.scss';
1011

@@ -67,11 +68,6 @@ const getWidthFromSize = (size: DrawerProps['size']) => {
6768
return `${(DrawerSize.Default / 1440) * 100}%`;
6869
};
6970

70-
const isValidBanner = (banner: DrawerProps['banner']): banner is AlertProps['message'] => {
71-
if (typeof banner === 'object') return React.isValidElement(banner);
72-
return true;
73-
};
74-
7571
const Drawer = <T extends readOnlyTab>(props: DrawerProps<T>) => {
7672
const drawerPrefixCls = 'dtc-drawer';
7773

@@ -148,9 +144,9 @@ const Drawer = <T extends readOnlyTab>(props: DrawerProps<T>) => {
148144
)}
149145
{banner && (
150146
<Alert
151-
message={isValidBanner(banner) ? banner : (banner as any).message}
147+
message={isAlertObjectProps(banner) ? banner.message : banner}
152148
banner
153-
{...(isValidBanner(banner) ? {} : omit(banner, 'message'))}
149+
{...(isAlertObjectProps(banner) ? omit(banner, 'message') : {})}
154150
/>
155151
)}
156152
{isTabMode(props) && (

src/modal/modal.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { omit } from 'lodash-es';
66

77
import Float, { type IFloatProps } from '../float';
88
import useMergeOption, { type MergeOption } from '../useMergeOption';
9+
import { isAlertObjectProps } from '../utils';
910
import Handler from './handle';
1011
import './index.scss';
1112

@@ -29,11 +30,6 @@ const getWidthFromSize = (size: IModalProps['size']) => {
2930
return 520;
3031
};
3132

32-
const isValidBanner = (banner: IModalProps['banner']): banner is AlertProps['message'] => {
33-
if (typeof banner === 'object') return React.isValidElement(banner);
34-
return true;
35-
};
36-
3733
export default function InternalModal({
3834
bodyStyle,
3935
banner,
@@ -137,9 +133,9 @@ export default function InternalModal({
137133
{banner && (
138134
<Alert
139135
className="dtc-modal-alert"
140-
message={isValidBanner(banner) ? banner : banner.message}
136+
message={isAlertObjectProps(banner) ? banner.message : banner}
141137
banner
142-
{...(isValidBanner(banner) ? {} : omit(banner, 'message'))}
138+
{...(isAlertObjectProps(banner) ? omit(banner, 'message') : {})}
143139
/>
144140
)}
145141
<section className="dtc-modal-body">{children}</section>

src/utils/index.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react';
2-
import { TooltipProps } from 'antd';
2+
import { AlertProps, TooltipProps } from 'antd';
33

44
export type LabelTooltipType = TooltipProps | TooltipProps['title'];
55

@@ -11,3 +11,14 @@ export function toTooltipProps(tooltip: LabelTooltipType): TooltipProps | null {
1111
title: tooltip,
1212
};
1313
}
14+
15+
type BannerPropType = AlertProps['message'] | Omit<AlertProps, 'banner'>;
16+
17+
export function isAlertObjectProps(banner: BannerPropType): banner is Omit<AlertProps, 'banner'> {
18+
return (
19+
typeof banner === 'object' &&
20+
banner !== null &&
21+
!React.isValidElement(banner) &&
22+
'message' in (banner as any)
23+
);
24+
}

0 commit comments

Comments
 (0)