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 (