import { usePrefixCls } from '@formily/antd/lib/__builtins__'; import { InputProps, TextAreaProps } from 'antd/lib/input'; import cls from 'classnames'; import React from 'react'; import { useCompile } from '../..'; import { EllipsisWithTooltip } from './EllipsisWithTooltip'; import { HTMLEncode } from './shared'; type Composed = { Input: React.FC; URL: React.FC; TextArea: React.FC< TextAreaProps & { ellipsis?: any; text?: any; addonBefore?: any; suffix?: any; addonAfter?: any; autop?: boolean } >; Html?: any; }; export const ReadPretty: Composed = () => null; ReadPretty.Input = (props) => { const prefixCls = usePrefixCls('description-input', props); const compile = useCompile(); return (
{props.addonBefore} {props.prefix} {compile(props.value)} {props.suffix} {props.addonAfter}
); }; ReadPretty.TextArea = (props) => { const prefixCls = usePrefixCls('description-textarea', props); const compile = useCompile(); const value = compile(props.value ?? ''); const { autop = true, ellipsis, text } = props; const html = (
'), }} /> ); console.log('value', value); const content = ( {ellipsis ? text || value : html} ); return (
{props.addonBefore} {props.prefix} {content} {props.suffix} {props.addonAfter}
); }; function convertToText(html: string) { let temp = document.createElement('div'); temp.innerHTML = html; const text = temp.innerText; temp = null; return text.replace(/[\n\r]/g, ''); } ReadPretty.Html = (props) => { const prefixCls = usePrefixCls('description-textarea', props); const compile = useCompile(); const value = compile(props.value ?? ''); const { autop = true, ellipsis } = props; const html = (
); const text = convertToText(value); const content = ( {ellipsis ? text : html} ); return (
{props.addonBefore} {props.prefix} {content} {props.suffix} {props.addonAfter}
); }; ReadPretty.URL = (props) => { const prefixCls = usePrefixCls('description-url', props); const content = props.value && ( {props.value} ); return (
{props.addonBefore} {props.prefix} {content} {props.suffix} {props.addonAfter}
); };