From de4a524b1d6f2e0b27633decf5303e9314e1feaf Mon Sep 17 00:00:00 2001 From: William Wong Date: Fri, 4 Mar 2022 02:53:16 -0800 Subject: [PATCH 1/3] Render/mount to a detached DOM node --- CHANGELOG.md | 4 ++ ...hould-render-on-a-detached-node-1-snap.png | Bin 0 -> 77895 bytes __tests__/html/simple.detached.html | 42 ++++++++++++++++++ __tests__/html/simple.detached.js | 3 ++ package-lock.json | 2 +- package.json | 2 +- packages/component/src/BasicTranscript.tsx | 32 ++++++++++--- 7 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 __tests__/__image_snapshots__/html/simple-detached-js-should-render-on-a-detached-node-1-snap.png create mode 100644 __tests__/html/simple.detached.html create mode 100644 __tests__/html/simple.detached.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 20215a771d..db3913c89c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Fixed + +- Fixes [#4196](https://github.com/microsoft/BotFramework-WebChat/issues/4196). Should able to render/mount to a detached DOM node, by [@compulim](https://github.com/compulim), in PR [#4197](https://github.com/microsoft/BotFramework-WebChat/issues/4197) + ## [4.15.0] - 2022-03-03 ### Breaking changes diff --git a/__tests__/__image_snapshots__/html/simple-detached-js-should-render-on-a-detached-node-1-snap.png b/__tests__/__image_snapshots__/html/simple-detached-js-should-render-on-a-detached-node-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..7384212f8227791df24b3c705adeb787c56fee36 GIT binary patch literal 77895 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 D(vr38@! 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 A1^@s6 literal 0 HcmV?d00001 diff --git a/__tests__/html/simple.detached.html b/__tests__/html/simple.detached.html new file mode 100644 index 0000000000..acb7b71a09 --- /dev/null +++ b/__tests__/html/simple.detached.html @@ -0,0 +1,42 @@ + + + + + + + + + + + + diff --git a/__tests__/html/simple.detached.js b/__tests__/html/simple.detached.js new file mode 100644 index 0000000000..c806d29ae9 --- /dev/null +++ b/__tests__/html/simple.detached.js @@ -0,0 +1,3 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +test('should render on a detached node', () => runHTML('simple.detached.html')); diff --git a/package-lock.json b/package-lock.json index 1e36e9030f..57f69ae77f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "botframework-webchat-root", - "version": "4.15.0", + "version": "4.15.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b0493151d2..d7e3638539 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "botframework-webchat-root", - "version": "4.15.0", + "version": "4.15.1", "private": true, "files": [ "lib/**/*" diff --git a/packages/component/src/BasicTranscript.tsx b/packages/component/src/BasicTranscript.tsx index 3bf014ed2b..9d6913dce7 100644 --- a/packages/component/src/BasicTranscript.tsx +++ b/packages/component/src/BasicTranscript.tsx @@ -267,16 +267,21 @@ const InternalTranscript = forwardRef( if (scrollableElement && activityBoundingBoxElement) { // ESLint conflict with TypeScript. The result of getClientRects() is not an Array but DOMRectList, and cannot be destructured. // eslint-disable-next-line prefer-destructuring - const { height: activityHeight, y: activityY } = activityBoundingBoxElement.getClientRects()[0]; + const activityBoundingBoxElementClientRect = activityBoundingBoxElement.getClientRects()[0]; // ESLint conflict with TypeScript. The result of getClientRects() is not an Array but DOMRectList, and cannot be destructured. // eslint-disable-next-line prefer-destructuring - const { height: scrollableHeight } = scrollableElement.getClientRects()[0]; - const activityOffsetTop = activityY + scrollableElement.scrollTop; + const scrollableElementClientRect = scrollableElement.getClientRects()[0]; - const scrollTop = Math.min(activityOffsetTop, activityOffsetTop - scrollableHeight + activityHeight); + if (activityBoundingBoxElementClientRect && scrollableElementClientRect) { + const { height: activityHeight, y: activityY } = activityBoundingBoxElementClientRect; + const { height: scrollableHeight } = scrollableElementClientRect; + const activityOffsetTop = activityY + scrollableElement.scrollTop; - scrollToBottomScrollTo(scrollTop, { behavior }); + const scrollTop = Math.min(activityOffsetTop, activityOffsetTop - scrollableHeight + activityHeight); + + scrollToBottomScrollTo(scrollTop, { behavior }); + } } } }, @@ -342,7 +347,13 @@ const InternalTranscript = forwardRef( // "getClientRects()" is not returning an array, thus, it is not destructurable. // eslint-disable-next-line prefer-destructuring - const { bottom: scrollableClientBottom } = scrollableElement.getClientRects()[0]; + const scrollableElementClientRect = scrollableElement.getClientRects()[0]; + + if (!scrollableElementClientRect) { + return; + } + + const { bottom: scrollableClientBottom } = scrollableElementClientRect; // Find the activity just above scroll view bottom. // If the scroll view is already on top, get the first activity. @@ -352,7 +363,14 @@ const InternalTranscript = forwardRef( ? activityElements .reverse() // Add subpixel tolerance - .find(([, element]) => element.getClientRects()[0].bottom < scrollableClientBottom + 1) + .find(([, element]) => { + // "getClientRects()" is not returning an array, thus, it is not destructurable. + // eslint-disable-next-line prefer-destructuring + const elementClientRect = element.getClientRects()[0]; + + // If the activity is not attached on DOM, we should not count it as it is not visible. + return elementClientRect && elementClientRect.bottom < scrollableClientBottom + 1; + }) : activityElements[0] )?.[0]; From 5939d71a51cec73511918fe732871ace6f5e0262 Mon Sep 17 00:00:00 2001 From: William Wong Date: Fri, 4 Mar 2022 03:08:56 -0800 Subject: [PATCH 2/3] Verbiage --- CHANGELOG.md | 2 +- packages/component/src/BasicTranscript.tsx | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db3913c89c..759e4025a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed -- Fixes [#4196](https://github.com/microsoft/BotFramework-WebChat/issues/4196). Should able to render/mount to a detached DOM node, by [@compulim](https://github.com/compulim), in PR [#4197](https://github.com/microsoft/BotFramework-WebChat/issues/4197) +- Fixes [#4196](https://github.com/microsoft/BotFramework-WebChat/issues/4196). Should render/mount to a detached DOM node without errors, by [@compulim](https://github.com/compulim), in PR [#4197](https://github.com/microsoft/BotFramework-WebChat/issues/4197) ## [4.15.0] - 2022-03-03 diff --git a/packages/component/src/BasicTranscript.tsx b/packages/component/src/BasicTranscript.tsx index 9d6913dce7..a4f854b6b4 100644 --- a/packages/component/src/BasicTranscript.tsx +++ b/packages/component/src/BasicTranscript.tsx @@ -273,6 +273,7 @@ const InternalTranscript = forwardRef( // eslint-disable-next-line prefer-destructuring const scrollableElementClientRect = scrollableElement.getClientRects()[0]; + // If either the activity or the transcript scrollable is not on DOM, we will not scroll the view. if (activityBoundingBoxElementClientRect && scrollableElementClientRect) { const { height: activityHeight, y: activityY } = activityBoundingBoxElementClientRect; const { height: scrollableHeight } = scrollableElementClientRect; @@ -349,6 +350,7 @@ const InternalTranscript = forwardRef( // eslint-disable-next-line prefer-destructuring const scrollableElementClientRect = scrollableElement.getClientRects()[0]; + // If the scrollable is not mounted, we cannot measure which activity is in view. Thus, we will not fire any events. if (!scrollableElementClientRect) { return; } @@ -368,7 +370,7 @@ const InternalTranscript = forwardRef( // eslint-disable-next-line prefer-destructuring const elementClientRect = element.getClientRects()[0]; - // If the activity is not attached on DOM, we should not count it as it is not visible. + // If the activity is not attached to DOM tree, we should not count it as "bottommost visible activity", as it is not visible. return elementClientRect && elementClientRect.bottom < scrollableClientBottom + 1; }) : activityElements[0] From a4939061e8c3f25d12c4435bba6a64ee99cb37da Mon Sep 17 00:00:00 2001 From: William Wong Date: Fri, 4 Mar 2022 04:27:11 -0800 Subject: [PATCH 3/3] 4.15.1 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 759e4025a6..8014750865 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [4.15.1] - 2022-03-04 + ### Fixed - Fixes [#4196](https://github.com/microsoft/BotFramework-WebChat/issues/4196). Should render/mount to a detached DOM node without errors, by [@compulim](https://github.com/compulim), in PR [#4197](https://github.com/microsoft/BotFramework-WebChat/issues/4197)