From 45542b968a870da8f9b78f08abd840780869414a Mon Sep 17 00:00:00 2001 From: Cody Leff Date: Mon, 21 Nov 2022 16:57:48 -0700 Subject: [PATCH 1/6] Make overflow button show on custom content. --- .../components/DropdownContainer/index.tsx | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/superset-frontend/src/components/DropdownContainer/index.tsx b/superset-frontend/src/components/DropdownContainer/index.tsx index 9af3a96534a7..374bd34a6dc4 100644 --- a/superset-frontend/src/components/DropdownContainer/index.tsx +++ b/superset-frontend/src/components/DropdownContainer/index.tsx @@ -104,7 +104,7 @@ const DropdownContainer = forwardRef( { items, onOverflowingStateChange, - dropdownContent: popoverContent, + dropdownContent: getPopoverContent, dropdownRef: popoverRef, dropdownStyle: popoverStyle = {}, dropdownTriggerCount: popoverTriggerCount, @@ -209,26 +209,31 @@ const DropdownContainer = forwardRef( } }, [notOverflowedIds, onOverflowingStateChange, overflowedIds]); - const content = useMemo( - () => ( -
- {popoverContent - ? popoverContent(overflowedItems) - : overflowedItems.map(item => item.element)} -
- ), + const overflowingCount = + overflowingIndex !== -1 ? items.length - overflowingIndex : 0; + + const popoverContent = useMemo( + () => + getPopoverContent || overflowingCount ? ( +
+ {getPopoverContent + ? getPopoverContent(overflowedItems) + : overflowedItems.map(item => item.element)} +
+ ) : null, [ + getPopoverContent, overflowedItems, - popoverContent, + overflowingCount, popoverRef, popoverStyle, theme.gridUnit, @@ -244,9 +249,6 @@ const DropdownContainer = forwardRef( [ref], ); - const overflowingCount = - overflowingIndex !== -1 ? items.length - overflowingIndex : 0; - return (
{notOverflowedItems.map(item => item.element)}
- {overflowingCount > 0 && ( + {popoverContent && ( setPopoverVisible(visible)} From d3eaac1bc0432ec54e0ed878bcb5b9f0fe34ccdc Mon Sep 17 00:00:00 2001 From: Cody Leff Date: Tue, 22 Nov 2022 16:50:52 -0700 Subject: [PATCH 2/6] Update dropdown button icon and text. --- .../src/components/DropdownContainer/index.tsx | 14 ++++++++++++-- .../FilterBar/FilterControls/FilterControls.tsx | 13 +++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/superset-frontend/src/components/DropdownContainer/index.tsx b/superset-frontend/src/components/DropdownContainer/index.tsx index 374bd34a6dc4..00889c3e25b3 100644 --- a/superset-frontend/src/components/DropdownContainer/index.tsx +++ b/superset-frontend/src/components/DropdownContainer/index.tsx @@ -280,10 +280,20 @@ const DropdownContainer = forwardRef( 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 9b0347ebf022..d94de137727b 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx @@ -24,6 +24,7 @@ import { Divider, css, SupersetTheme, + t, } from '@superset-ui/core'; import { createHtmlPortalNode, @@ -37,6 +38,7 @@ import { } from 'src/dashboard/components/nativeFilters/state'; import { FilterBarOrientation, RootState } from 'src/dashboard/types'; import DropdownContainer from 'src/components/DropdownContainer'; +import Icons from 'src/components/Icons'; import { FiltersOutOfScopeCollapsible } from '../FiltersOutOfScopeCollapsible'; import { useFilterControlFactory } from '../useFilterControlFactory'; import { FiltersDropdownContent } from '../FiltersDropdownContent'; @@ -124,6 +126,17 @@ const FilterControls: FC = ({ > + } + dropdownTriggerText={t('More filters')} dropdownContent={overflowedItems => { const overflowedItemIds = new Set( overflowedItems.map(({ id }) => id), From 6d0d33f013783ee5dd07777da6d9a9dc00f11c87 Mon Sep 17 00:00:00 2001 From: Cody Leff Date: Tue, 22 Nov 2022 17:59:20 -0700 Subject: [PATCH 3/6] Show number of active filters in badge. --- .../src/query/types/Dashboard.ts | 2 + .../components/DropdownContainer/index.tsx | 7 +- .../FilterControls/FilterControls.tsx | 148 +++++++++++------- .../FilterBar/useFilterControlFactory.tsx | 10 +- .../components/nativeFilters/state.ts | 9 +- 5 files changed, 111 insertions(+), 65 deletions(-) diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts index c86c1cfbe41a..90c1e5856ec3 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts @@ -91,6 +91,8 @@ export type Filter = { description: string; }; +export type FilterWithDataMask = Filter & { dataMask: DataMaskWithId }; + export type Divider = Partial> & { id: string; title: string; diff --git a/superset-frontend/src/components/DropdownContainer/index.tsx b/superset-frontend/src/components/DropdownContainer/index.tsx index 00889c3e25b3..d364d3542ee7 100644 --- a/superset-frontend/src/components/DropdownContainer/index.tsx +++ b/superset-frontend/src/components/DropdownContainer/index.tsx @@ -276,14 +276,17 @@ const DropdownContainer = forwardRef( trigger="click" visible={popoverVisible} onVisibleChange={visible => setPopoverVisible(visible)} + placement="bottom" >