From 078030b7dcf4391c8d5db61aa0ec46d5f66eea94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Korhan=20=C3=96ZBEK?= <korhanozbek44@gmail.com> Date: Sun, 8 Jan 2023 22:46:08 +0300 Subject: [PATCH 1/2] feat: add backdrop static option support --- .../src/components/offcanvas/COffcanvas.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx b/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx index a504903b..d1598751 100644 --- a/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx +++ b/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx @@ -11,7 +11,7 @@ export interface COffcanvasProps extends HTMLAttributes<HTMLDivElement> { /** * Apply a backdrop on body while offcanvas is open. */ - backdrop?: boolean + backdrop?: boolean | string /** * A string of all className you want applied to the base component. */ @@ -105,6 +105,11 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( const handleDismiss = () => { setVisible(false) } + const handleBackdropDismiss = () => { + if (backdrop !== 'static') { + setVisible(false) + } + } const handleKeyDown = useCallback( (event: React.KeyboardEvent<HTMLDivElement>) => { @@ -154,7 +159,7 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( createPortal( <CBackdrop className="offcanvas-backdrop" - onClick={handleDismiss} + onClick={handleBackdropDismiss} visible={_visible} />, document.body, @@ -162,7 +167,7 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( : backdrop && ( <CBackdrop className="offcanvas-backdrop" - onClick={handleDismiss} + onClick={handleBackdropDismiss} visible={_visible} /> )} @@ -172,7 +177,7 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( ) COffcanvas.propTypes = { - backdrop: PropTypes.bool, + backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), children: PropTypes.node, className: PropTypes.string, keyboard: PropTypes.bool, From b4792cc1c652eba4faf4dcb567ed65f273caf6bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Holeczek?= <lukasz@holeczek.pl> Date: Fri, 27 Jan 2023 10:30:48 +0100 Subject: [PATCH 2/2] Update COffcanvas.tsx --- .../coreui-react/src/components/offcanvas/COffcanvas.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx b/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx index d1598751..b05335c9 100644 --- a/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx +++ b/packages/coreui-react/src/components/offcanvas/COffcanvas.tsx @@ -11,7 +11,7 @@ export interface COffcanvasProps extends HTMLAttributes<HTMLDivElement> { /** * Apply a backdrop on body while offcanvas is open. */ - backdrop?: boolean | string + backdrop?: boolean | 'static' /** * A string of all className you want applied to the base component. */ @@ -105,6 +105,7 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( const handleDismiss = () => { setVisible(false) } + const handleBackdropDismiss = () => { if (backdrop !== 'static') { setVisible(false) @@ -177,7 +178,7 @@ export const COffcanvas = forwardRef<HTMLDivElement, COffcanvasProps>( ) COffcanvas.propTypes = { - backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), + backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf<'static'>(['static'])]), children: PropTypes.node, className: PropTypes.string, keyboard: PropTypes.bool,