chore: doc link in compatible message

main
jialin 12 months ago
parent 2409cfefc9
commit edc36283d9

@ -7,7 +7,7 @@ import {
} from '@ant-design/icons';
import { Button } from 'antd';
import { isArray } from 'lodash';
import React, { useMemo } from 'react';
import React, { useCallback, useMemo } from 'react';
import styled from 'styled-components';
interface CompatibilityAlertProps {
@ -49,11 +49,27 @@ const MessageWrapper = styled.div`
font-size: var(--font-size-small);
gap: 4px;
`;
const linkReg = /<a (.*?)>(.*?)<\/a>/g;
const replaceReg = /<a(?![^>]*\btarget=)([^>]*)>/gi;
const CompatibilityAlert: React.FC<CompatibilityAlertProps> = (props) => {
const { warningStatus, contentStyle, showClose, onClose } = props;
const { title, show, message, isHtml, type = 'warning' } = warningStatus;
const handleLinkMessage = useCallback((msg: string) => {
const link = msg?.match(linkReg);
if (link) {
return (
<span
dangerouslySetInnerHTML={{
__html: msg.replace(replaceReg, '<a target="_blank" $1>')
}}
></span>
);
}
return msg || null;
}, []);
const renderMessage = useMemo(() => {
if (!message || !show) {
return '';
@ -68,19 +84,19 @@ const CompatibilityAlert: React.FC<CompatibilityAlertProps> = (props) => {
);
}
if (typeof message === 'string') {
return message;
return handleLinkMessage(message);
}
if (isArray(message)) {
return (
<MessageWrapper>
{message.map((item, index) => (
<div key={index}>{item}</div>
<div key={index}>{handleLinkMessage(item)}</div>
))}
</MessageWrapper>
);
}
return '';
}, [message, show]);
}, [message, show, handleLinkMessage]);
const renderIcon = useMemo(() => {
if (type === 'transition') {

Loading…
Cancel
Save