Commit 1885c41c authored by zhangwenshuai's avatar zhangwenshuai

update apolloTable textarea

parent 1f449005
@import '../../../../common';
.container {
position: relative;
display: flex;
width: 100%;
height: 100%;
align-items: center;
.itemBgTxt {
position: absolute;
z-index: -1;
visibility: hidden;
}
}
.text {
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
}
.tooltip {
//min-width: 500px;
.more {
margin-left: @marginGen;
color: @primaryColor;
}
}
import { ApolloInputDetail } from '../input';
import React, { useEffect, useRef, useState } from 'react';
import classNames from 'classnames';
import { Tooltip } from 'antd';
import styles from './index.less';
import { TextAreaProps } from '../detailInterface';
export const ApolloTextAreaDetail = ApolloInputDetail;
export const ApolloTextAreaDetail = (props: TextAreaProps) => {
const { className, origin, componentAttr, rowData, formatter } = props;
const formatValue = formatter ? formatter(props.value) : props.value;
if (!formatValue) {
return null;
}
const [value, setValue] = useState(formatValue);
const { cutLength, getDetail } = componentAttr;
const [dotVisible, setDotVisible] = useState(false);
const container = useRef(null);
const dom = useRef(null);
useEffect(() => {
const containerTarget: any = container.current;
const target: any = dom.current;
if (containerTarget && target) {
if (target.clientWidth > containerTarget.clientWidth) {
setDotVisible(true);
} else {
setDotVisible(false);
}
}
}, [value]);
const getMore = async () => {
let newValue = await getDetail({ rowId: rowData.id });
if (newValue) {
newValue = formatter ? formatter(newValue) : newValue;
setValue(newValue);
}
};
if (origin === 'detailForm') {
return <div className={classNames(styles.text, className)}>{value}</div>;
}
if (typeof value === 'string') {
return (
<div className={styles.container} ref={container}>
{dotVisible ? (
<Tooltip
title={
<div className={styles.tooltip}>
{value}
{value.length === cutLength && <span className={styles.more} onClick={getMore}>查看更多</span>}
</div>
}
>
<div className={classNames(styles.text, className)}>{value}</div>
</Tooltip>
) : (
<div className={classNames(styles.text, className)}>{value}</div>
)}
<div className={styles.itemBgTxt} ref={dom}>
{value}
</div>
</div>
);
}
return '数据错误';
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment