From eddfacd67332bce458d746dddfca8b551a814dc1 Mon Sep 17 00:00:00 2001 From: Saket Bajaj <42207428+saket2403@users.noreply.github.com> Date: Tue, 19 Sep 2023 12:48:53 +0530 Subject: [PATCH] No Scroll (#358) --- packages/terra-application/CHANGELOG.md | 1 + .../src/application-base/ApplicationBase.jsx | 11 ++-- .../ApplicationLoadingOverlayProvider.jsx | 13 ++++- ...licationLoadingOverlayProvider.module.scss | 4 ++ .../ApplicationStatusOverlayProvider.jsx | 13 ++++- ...plicationStatusOverlayProvider.module.scss | 4 ++ .../application-base/ApplicationBase.test.jsx | 9 ++++ .../ApplicationBase.test.jsx.snap | 6 +++ ...ApplicationLoadingOverlayProvider.test.jsx | 8 +++ ...cationLoadingOverlayProvider.test.jsx.snap | 49 +++++++++++++++-- .../ApplicationStatusOverlayProvider.test.jsx | 8 +++ ...icationStatusOverlayProvider.test.jsx.snap | 53 ++++++++++++++++--- 12 files changed, 160 insertions(+), 19 deletions(-) diff --git a/packages/terra-application/CHANGELOG.md b/packages/terra-application/CHANGELOG.md index face3100c..9f5602e1d 100644 --- a/packages/terra-application/CHANGELOG.md +++ b/packages/terra-application/CHANGELOG.md @@ -9,6 +9,7 @@ * Added * Added user action utility button. + * Added `noScroll` prop to remove scroll in powerchart. ## 2.1.0 - (June 22, 2022) diff --git a/packages/terra-application/src/application-base/ApplicationBase.jsx b/packages/terra-application/src/application-base/ApplicationBase.jsx index 142648486..e61a56397 100644 --- a/packages/terra-application/src/application-base/ApplicationBase.jsx +++ b/packages/terra-application/src/application-base/ApplicationBase.jsx @@ -59,10 +59,15 @@ const propTypes = { * before continuing with the unload event, even if NavigationPrompts are present. */ unloadPromptIsDisabled: PropTypes.bool, + /** + * @private + * When set to true scroll will be disabled. internal prop to be used by Mpages for terra-tabs in Powerchart. + */ + noScroll: PropTypes.bool, }; const ApplicationBase = ({ - locale, themeName, fitToParentIsDisabled, children, unloadPromptIsDisabled, + locale, themeName, fitToParentIsDisabled, children, unloadPromptIsDisabled, noScroll, }) => { const registeredPromptsRef = useRef(); const [messages, setMessages] = useState(); @@ -132,8 +137,8 @@ const ApplicationBase = ({ registeredPromptsRef.current = registeredPrompts; }} > - - + + }> {children} diff --git a/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.jsx b/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.jsx index dbdbb8b5a..155c92ec0 100644 --- a/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.jsx +++ b/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.jsx @@ -22,9 +22,16 @@ const propTypes = { * ApplicationLoadingOverlayProvider. */ scrollRefCallback: PropTypes.func, + /** + * @private + * Prop to not render scroll in Powerchart. + */ + noScroll: PropTypes.bool, }; -const ApplicationLoadingOverlayProvider = ({ children, scrollRefCallback, ...customProps }) => { +const ApplicationLoadingOverlayProvider = ({ + children, scrollRefCallback, noScroll, ...customProps +}) => { const [registeredLoadingOverlays, setRegisteredLoadingOverlays] = React.useState({}); const contextValue = useMemo(() => ({ @@ -73,13 +80,15 @@ const ApplicationLoadingOverlayProvider = ({ children, scrollRefCallback, ...cus className = [className, customProps.className].join(' '); } + const scrollClass = cx({ 'remove-scroll': noScroll }); + return ( - + {children} diff --git a/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.module.scss b/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.module.scss index 72e04e97b..d66b289d8 100644 --- a/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.module.scss +++ b/packages/terra-application/src/application-loading-overlay/ApplicationLoadingOverlayProvider.module.scss @@ -2,4 +2,8 @@ .container { height: 100%; } + + .remove-scroll { + overflow: visible; + } } diff --git a/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.jsx b/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.jsx index 8e63aa0a1..06cd555ed 100644 --- a/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.jsx +++ b/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.jsx @@ -21,9 +21,16 @@ const propTypes = { * ApplicationStatusOverlayProvider. */ scrollRefCallback: PropTypes.func, + /** + * @private + * Prop to not render scroll in Powerchart. + */ + noScroll: PropTypes.bool, }; -const ApplicationStatusOverlayProvider = ({ children, scrollRefCallback, ...customProps }) => { +const ApplicationStatusOverlayProvider = ({ + children, scrollRefCallback, noScroll, ...customProps +}) => { const [registeredStatusOverlay, setRegisteredStatusOverlay] = React.useState({}); const containerRef = React.useRef(); @@ -101,11 +108,13 @@ const ApplicationStatusOverlayProvider = ({ children, scrollRefCallback, ...cust /> ); + const scrollClass = cx({ 'remove-scroll': noScroll }); + return (
{statusView}
- + {children} diff --git a/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.module.scss b/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.module.scss index 294f724ac..1550948d0 100644 --- a/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.module.scss +++ b/packages/terra-application/src/application-status-overlay/ApplicationStatusOverlayProvider.module.scss @@ -23,4 +23,8 @@ width: 100%; z-index: 1; } + + .remove-scroll { + overflow: visible; + } } diff --git a/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx b/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx index 869f0ceb5..0ad2c3044 100644 --- a/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx +++ b/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx @@ -33,4 +33,13 @@ describe('ApplicationBase', () => { )); expect(wrapper).toMatchSnapshot(); }); + + it('should render without scroll', () => { + const wrapper = mountWithIntl(( + +
content
+
+ )); + expect(wrapper).toMatchSnapshot(); + }); }); diff --git a/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap b/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap index ca6a3af12..1f5b0718e 100644 --- a/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap @@ -15,3 +15,9 @@ exports[`ApplicationBase should render with minimal props 1`] = ` `; exports[`ApplicationBase should render with the preferred browser locale 1`] = ``; + +exports[`ApplicationBase should render without scroll 1`] = ` + +`; diff --git a/packages/terra-application/tests/jest/application-loading-overlay/ApplicationLoadingOverlayProvider.test.jsx b/packages/terra-application/tests/jest/application-loading-overlay/ApplicationLoadingOverlayProvider.test.jsx index 564a7d291..d8f17038e 100644 --- a/packages/terra-application/tests/jest/application-loading-overlay/ApplicationLoadingOverlayProvider.test.jsx +++ b/packages/terra-application/tests/jest/application-loading-overlay/ApplicationLoadingOverlayProvider.test.jsx @@ -88,5 +88,13 @@ describe('ApplicationLoadingOverlayProvider', () => { React.useState = reactUseState; }); + + it('should render without scroll', () => { + const wrapper = shallow(( + + )); + + expect(wrapper).toMatchSnapshot(); + }); }); }); diff --git a/packages/terra-application/tests/jest/application-loading-overlay/__snapshots__/ApplicationLoadingOverlayProvider.test.jsx.snap b/packages/terra-application/tests/jest/application-loading-overlay/__snapshots__/ApplicationLoadingOverlayProvider.test.jsx.snap index 79e25d2b3..f52ab48f6 100644 --- a/packages/terra-application/tests/jest/application-loading-overlay/__snapshots__/ApplicationLoadingOverlayProvider.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-loading-overlay/__snapshots__/ApplicationLoadingOverlayProvider.test.jsx.snap @@ -13,7 +13,9 @@ exports[`ApplicationLoadingOverlayProvider Snapshots should give render dark ove /> } > - + } > - + } > - + } > - + } > - + `; + +exports[`ApplicationLoadingOverlayProvider Snapshots should render without scroll 1`] = ` + + } +> + + + + +`; diff --git a/packages/terra-application/tests/jest/application-status-overlay/ApplicationStatusOverlayProvider.test.jsx b/packages/terra-application/tests/jest/application-status-overlay/ApplicationStatusOverlayProvider.test.jsx index 309b4ad50..da01e31cc 100644 --- a/packages/terra-application/tests/jest/application-status-overlay/ApplicationStatusOverlayProvider.test.jsx +++ b/packages/terra-application/tests/jest/application-status-overlay/ApplicationStatusOverlayProvider.test.jsx @@ -149,5 +149,13 @@ describe('ApplicationStatusOverlayProvider', () => { React.useState = reactUseState; }); + + it('should render without scroll', () => { + const wrapper = shallow(( + + )); + + expect(wrapper).toMatchSnapshot(); + }); }); }); diff --git a/packages/terra-application/tests/jest/application-status-overlay/__snapshots__/ApplicationStatusOverlayProvider.test.jsx.snap b/packages/terra-application/tests/jest/application-status-overlay/__snapshots__/ApplicationStatusOverlayProvider.test.jsx.snap index 30707e8f5..cfc512e1e 100644 --- a/packages/terra-application/tests/jest/application-status-overlay/__snapshots__/ApplicationStatusOverlayProvider.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-status-overlay/__snapshots__/ApplicationStatusOverlayProvider.test.jsx.snap @@ -16,7 +16,9 @@ exports[`ApplicationStatusOverlayProvider Snapshots should render a single statu className="container-content" data-status-overlay-container-content={true} > - + - + - + - + - + - + - +
`; + +exports[`ApplicationStatusOverlayProvider Snapshots should render without scroll 1`] = ` +
+
+ + + +
+
+`;