You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by kg...@apache.org on 2023/06/28 14:29:36 UTC

[superset] branch master updated: fix(native-filters): Infinite load when filter with default first value is out of scope in horizontal bar (#24542)

This is an automated email from the ASF dual-hosted git repository.

kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 262b769d19 fix(native-filters): Infinite load when filter with default first value is out of scope in horizontal bar (#24542)
262b769d19 is described below

commit 262b769d19a072514102e27b8f7b46bcb6395b93
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Wed Jun 28 16:29:29 2023 +0200

    fix(native-filters): Infinite load when filter with default first value is out of scope in horizontal bar (#24542)
---
 .../src/components/DropdownContainer/index.tsx             |  7 ++++++-
 superset-frontend/src/components/Popover/Popover.test.tsx  |  5 +++++
 .../src/components/Popover/{index.tsx => Popover.tsx}      | 14 ++++++++------
 superset-frontend/src/components/Popover/index.tsx         |  4 +---
 .../FilterBar/FilterControls/FilterControls.tsx            |  1 +
 5 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/superset-frontend/src/components/DropdownContainer/index.tsx b/superset-frontend/src/components/DropdownContainer/index.tsx
index f2504c66ff..79f2b4a305 100644
--- a/superset-frontend/src/components/DropdownContainer/index.tsx
+++ b/superset-frontend/src/components/DropdownContainer/index.tsx
@@ -104,6 +104,10 @@ export interface DropdownContainerProps {
    * Main container additional style properties.
    */
   style?: CSSProperties;
+  /**
+   * Force render popover content before it's first opened
+   */
+  forceRender?: boolean;
 }
 
 export type Ref = HTMLDivElement & { open: () => void };
@@ -120,6 +124,7 @@ const DropdownContainer = forwardRef(
       dropdownTriggerIcon,
       dropdownTriggerText = t('More'),
       dropdownTriggerTooltip = null,
+      forceRender,
       style,
     }: DropdownContainerProps,
     outerRef: RefObject<Ref>,
@@ -364,7 +369,7 @@ const DropdownContainer = forwardRef(
               visible={popoverVisible}
               onVisibleChange={visible => setPopoverVisible(visible)}
               placement="bottom"
-              destroyTooltipOnHide
+              forceRender={forceRender}
             >
               <Tooltip title={dropdownTriggerTooltip}>
                 <Button
diff --git a/superset-frontend/src/components/Popover/Popover.test.tsx b/superset-frontend/src/components/Popover/Popover.test.tsx
index bb9b21c866..95e5196548 100644
--- a/superset-frontend/src/components/Popover/Popover.test.tsx
+++ b/superset-frontend/src/components/Popover/Popover.test.tsx
@@ -47,6 +47,11 @@ test('it should not render a title or content when not visible', () => {
   expect(title).not.toBeInTheDocument();
 });
 
+test('it should render content when not visible but forceRender=true', () => {
+  render(<Popover content="Content sample" forceRender />);
+  expect(screen.getByText('Content sample')).toBeInTheDocument();
+});
+
 test('renders with icon child', async () => {
   render(
     <Popover content="Content sample" title="Popover title">
diff --git a/superset-frontend/src/components/Popover/index.tsx b/superset-frontend/src/components/Popover/Popover.tsx
similarity index 72%
copy from superset-frontend/src/components/Popover/index.tsx
copy to superset-frontend/src/components/Popover/Popover.tsx
index acde76c1e6..d0828ece2e 100644
--- a/superset-frontend/src/components/Popover/index.tsx
+++ b/superset-frontend/src/components/Popover/Popover.tsx
@@ -16,11 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { Popover } from 'antd';
 
-export type { PopoverProps } from 'antd/lib/popover';
-export type { TooltipPlacement } from 'antd/lib/tooltip';
+import React from 'react';
+import { Popover as AntdPopover } from 'antd';
+import type { PopoverProps as AntdPopoverProps } from 'antd/lib/popover';
 
-// Eventually Popover can be wrapped and customized in this file
-// for now we're just redirecting
-export default Popover;
+export interface PopoverProps extends AntdPopoverProps {
+  forceRender?: boolean;
+}
+
+export const Popover = (props: PopoverProps) => <AntdPopover {...props} />;
diff --git a/superset-frontend/src/components/Popover/index.tsx b/superset-frontend/src/components/Popover/index.tsx
index acde76c1e6..d147a75ed5 100644
--- a/superset-frontend/src/components/Popover/index.tsx
+++ b/superset-frontend/src/components/Popover/index.tsx
@@ -16,11 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { Popover } from 'antd';
-
 export type { PopoverProps } from 'antd/lib/popover';
 export type { TooltipPlacement } from 'antd/lib/tooltip';
 
 // Eventually Popover can be wrapped and customized in this file
 // for now we're just redirecting
-export default Popover;
+export { Popover as default } from './Popover';
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx
index e3459610bd..629ec75cb0 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx
@@ -277,6 +277,7 @@ const FilterControls: FC<FilterControlsProps> = ({
               )
             : undefined
         }
+        forceRender={hasRequiredFirst}
         ref={popoverRef}
         onOverflowingStateChange={({ overflowed: nextOverflowedIds }) => {
           if (