You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2023/07/07 22:41:42 UTC
[superset] 12/12: fix: Filter values are not updating when dependencies are set (#23566)
This is an automated email from the ASF dual-hosted git repository.
elizabeth pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/superset.git
commit ccd456679e87a25087e9a32a6b3f880616fed421
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Mon Apr 3 17:20:00 2023 -0300
fix: Filter values are not updating when dependencies are set (#23566)
(cherry picked from commit 3bc496040d2834e2ed20086a8973c53d30419a89)
---
superset-frontend/src/components/Select/Select.tsx | 23 +++++++++++-----------
superset-frontend/src/components/Select/types.ts | 5 +++++
.../FiltersConfigForm/FiltersConfigForm.tsx | 2 +-
.../components/Select/SelectFilterPlugin.tsx | 12 +++--------
4 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/superset-frontend/src/components/Select/Select.tsx b/superset-frontend/src/components/Select/Select.tsx
index 11f66d8dba..c2e47e3cc4 100644
--- a/superset-frontend/src/components/Select/Select.tsx
+++ b/superset-frontend/src/components/Select/Select.tsx
@@ -83,6 +83,7 @@ const Select = forwardRef(
{
allowClear,
allowNewOptions = false,
+ allowSelectAll = true,
ariaLabel,
filterOption = true,
header = null,
@@ -195,10 +196,17 @@ const Select = forwardRef(
const selectAllEnabled = useMemo(
() =>
!isSingleMode &&
+ allowSelectAll &&
selectOptions.length > 0 &&
enabledOptions.length > 1 &&
!inputValue,
- [isSingleMode, selectOptions.length, enabledOptions.length, inputValue],
+ [
+ isSingleMode,
+ allowSelectAll,
+ selectOptions.length,
+ enabledOptions.length,
+ inputValue,
+ ],
);
const selectAllMode = useMemo(
@@ -360,9 +368,8 @@ const Select = forwardRef(
useEffect(() => {
// if all values are selected, add select all to value
if (
- !isSingleMode &&
- ensureIsArray(value).length === selectAllEligible.length &&
- selectOptions.length > 0
+ selectAllEnabled &&
+ ensureIsArray(value).length === selectAllEligible.length
) {
setSelectValue(
labelInValue
@@ -373,13 +380,7 @@ const Select = forwardRef(
] as AntdLabeledValue[]),
);
}
- }, [
- value,
- isSingleMode,
- labelInValue,
- selectAllEligible.length,
- selectOptions.length,
- ]);
+ }, [labelInValue, selectAllEligible.length, selectAllEnabled, value]);
useEffect(() => {
const checkSelectAll = ensureIsArray(selectValue).some(
diff --git a/superset-frontend/src/components/Select/types.ts b/superset-frontend/src/components/Select/types.ts
index 6e4c7f072d..6ab9d7478c 100644
--- a/superset-frontend/src/components/Select/types.ts
+++ b/superset-frontend/src/components/Select/types.ts
@@ -155,6 +155,11 @@ export interface BaseSelectProps extends AntdExposedProps {
}
export interface SelectProps extends BaseSelectProps {
+ /**
+ * It enables the user to select all options.
+ * True by default.
+ * */
+ allowSelectAll?: boolean;
/**
* It defines the options of the Select.
* The options can be static, an array of options.
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
index 0b6a33f069..3434107978 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
@@ -368,7 +368,7 @@ const FiltersConfigForm = (
const formFilter = formValues || undoFormValues || defaultFormFilter;
const dependencies: string[] =
- formFilter?.dependencies || filterToEdit?.cascadeParentIds;
+ formFilter?.dependencies || filterToEdit?.cascadeParentIds || [];
const nativeFilterItems = getChartMetadataRegistry().items;
const nativeFilterVizTypes = Object.entries(nativeFilterItems)
diff --git a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
index d3cb2b4dea..7de9efcfaf 100644
--- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
+++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
@@ -121,7 +121,6 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
}),
[],
);
- const [initialData, setInitialData] = useState<typeof data>([]);
const updateDataMask = useCallback(
(values: SelectValue) => {
@@ -239,7 +238,7 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
}, [filterState.validateMessage, filterState.validateStatus]);
const options = useMemo(() => {
- const allOptions = [...data, ...initialData];
+ const allOptions = [...data];
const uniqueOptions = uniqWith(allOptions, isEqual);
const selectOptions: { label: string; value: DataRecordValue }[] = [];
uniqueOptions.forEach(row => {
@@ -250,7 +249,7 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
});
});
return selectOptions;
- }, [data, initialData, datatype, groupby, labelFormatter]);
+ }, [data, datatype, groupby, labelFormatter]);
const sortComparator = useCallback(
(a: AntdLabeledValue, b: AntdLabeledValue) => {
@@ -301,12 +300,6 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
setDataMask(dataMask);
}, [JSON.stringify(dataMask)]);
- useEffect(() => {
- if (data.length && !initialData.length) {
- setInitialData(data);
- }
- }, [data, initialData.length]);
-
return (
<FilterPluginStyle height={height} width={width}>
<StyledFormItem
@@ -316,6 +309,7 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
<Select
allowClear
allowNewOptions
+ allowSelectAll={!searchAllOptions}
// @ts-ignore
value={filterState.value || []}
disabled={isDisabled}