From 2aaa51f69594a79738806b0d2534abad327e935f Mon Sep 17 00:00:00 2001 From: tangying1027 <33517362+tangying1027@users.noreply.github.com> Date: Mon, 1 Jan 2024 20:54:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20tooltip=E8=87=AA=E5=8A=A8=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=20(#1911)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: xuying.xu --- .../f2/src/components/tooltip/tooltipView.tsx | 49 ++++++++ ...12\250\346\215\242\350\241\214-1-snap.png" | Bin 0 -> 16225 bytes ...12\250\346\215\242\350\241\214-2-snap.png" | Bin 0 -> 17201 bytes .../test/components/tooltip/tooltip.test.tsx | 118 +++++++++++++++++- 4 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 "packages/f2/test/components/tooltip/__image_snapshots__/tooltip-test-tsx-tooltip-tooltip-\350\207\252\345\212\250\346\215\242\350\241\214-1-snap.png" create mode 100644 "packages/f2/test/components/tooltip/__image_snapshots__/tooltip-test-tsx-tooltip-tooltip-\350\207\252\345\212\250\346\215\242\350\241\214-2-snap.png" diff --git a/packages/f2/src/components/tooltip/tooltipView.tsx b/packages/f2/src/components/tooltip/tooltipView.tsx index 8b3ef8484..1d67235e7 100644 --- a/packages/f2/src/components/tooltip/tooltipView.tsx +++ b/packages/f2/src/components/tooltip/tooltipView.tsx @@ -260,6 +260,50 @@ const RenderYTip = (props) => { // tooltip 内容框 class RenderLabel extends Component { + style = {}; + + getMaxItemBox(node) { + let maxItemWidth = 0; + let maxItemHeight = 0; + (node.children || []).forEach((child) => { + const { layout } = child; + const { width, height } = layout; + + maxItemWidth = Math.max(maxItemWidth, width); + maxItemHeight = Math.max(maxItemHeight, height); + }); + + return { + width: maxItemWidth, + height: maxItemHeight, + }; + } + + _getContainerLayout() { + const { records, coord } = this.props; + + if (!records || !records.length) return; + const { width } = coord; + + const node = computeLayout(this, this.render()); + const { width: itemMaxWidth } = this.getMaxItemBox(node?.children[0]); + + // 每行最多的个数 + const lineMaxCount = Math.max(1, Math.floor(width / itemMaxWidth)); + const itemCount = records.length; + + // 是否需要换行 + if (itemCount > lineMaxCount) { + this.style = { + width, + }; + } + } + + willMount(): void { + this._getContainerLayout(); + } + render() { const { records, @@ -273,6 +317,7 @@ class RenderLabel extends Component { arrowWidth, x, coord, + itemWidth, } = this.props; // 显示内容 @@ -287,6 +332,7 @@ class RenderLabel extends Component { padding: [0, 0, 0, '6px'], left, top, + ...this.style, ...background, }} > @@ -299,6 +345,7 @@ class RenderLabel extends Component { flexDirection: 'row', alignItems: 'center', padding: [0, '6px', 0, 0], + width: itemWidth, }} > {showItemMarker ? ( @@ -410,6 +457,7 @@ export default class TooltipView extends Component { yTipBackground = defaultStyle.yTipBackground, custom = false, customText, + itemWidth, } = props; const itemMarkerStyle = { ...customItemMarkerStyle, @@ -500,6 +548,7 @@ export default class TooltipView extends Component { nameStyle={{ ...defaultStyle.nameStyle, ...nameStyle }} valueStyle={{ ...defaultStyle.valueStyle, ...valueStyle }} joinString={joinString} + itemWidth={itemWidth} /> )} diff --git "a/packages/f2/test/components/tooltip/__image_snapshots__/tooltip-test-tsx-tooltip-tooltip-\350\207\252\345\212\250\346\215\242\350\241\214-1-snap.png" "b/packages/f2/test/components/tooltip/__image_snapshots__/tooltip-test-tsx-tooltip-tooltip-\350\207\252\345\212\250\346\215\242\350\241\214-1-snap.png" new file mode 100644 index 0000000000000000000000000000000000000000..46f61c18e45b7951028d9a22740e2d4dde1a1c55 GIT binary patch literal 16225 zcmeIZWl&sEv@UpXmn66+KyYa^c(4d05WI0|+zIXyENBt}gkT8-cXwzYG{N12YmkuO z5@0s>-kJC6)tj1EH9w|a)$jx8KHdAAz4uz*`qsDBe)~%0DG@#mJ_JET&z~u%Ll7D_ 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 Wp$^UZ7U1YS^juLzp;XQ! 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 literal 0 HcmV?d00001 diff --git a/packages/f2/test/components/tooltip/tooltip.test.tsx b/packages/f2/test/components/tooltip/tooltip.test.tsx index 7cb816caa..5db6215da 100644 --- a/packages/f2/test/components/tooltip/tooltip.test.tsx +++ b/packages/f2/test/components/tooltip/tooltip.test.tsx @@ -411,7 +411,7 @@ describe('tooltip', () => { { fill: 'red', textAlign: 'start', textBaseline: 'middle', - text: '' + text: '', }} valueStyle={{ fill: 'red', - text: '' + text: '', }} /> @@ -461,4 +461,116 @@ describe('tooltip', () => { await delay(100); expect(context).toMatchImageSnapshot(); }); + + it('Tooltip 自动换行', async () => { + const context = createContext('Tooltip 自动换行'); + const data = [ + { + date: '2017-06-05', + type: '测试a', + value: 100, + }, + { + date: '2017-06-05', + type: '测试b', + value: 116, + }, + { + date: '2017-06-05', + type: '测试c', + value: 156, + }, + { + date: '2017-06-05', + type: '测试d', + value: 126, + }, + { + date: '2017-06-05', + type: '测试e', + value: 196, + }, + { + date: '2017-06-05', + type: '测试f', + value: 26, + }, + { + date: '2017-06-06', + type: '测试a', + value: 110, + }, + { + date: '2017-06-06', + type: '测试b', + value: 129, + }, + { + date: '2017-06-06', + type: '测试c', + value: 156, + }, + { + date: '2017-06-06', + type: '测试d', + value: 126, + }, + { + date: '2017-06-07', + type: '测试a', + value: 123, + }, + { + date: '2017-06-07', + type: '测试b', + value: 135, + }, + { + date: '2017-06-07', + type: '测试c', + value: 156, + }, + { + date: '2017-06-07', + type: '测试d', + value: 126, + }, + ]; + const { props } = ( + + + + + + + + + ); + + const canvas = new Canvas(props); + await canvas.render(); + + await delay(500); + expect(context).toMatchImageSnapshot(); + + const { props: updateProps } = ( + + + + + + + + + ); + + await canvas.update(updateProps); + await delay(500); + expect(context).toMatchImageSnapshot(); + }); });