@ -16,8 +16,8 @@ export const EditableFilterChip = ({
|
||||
const { getIcon } = useIcons();
|
||||
return (
|
||||
<SortOrFilterChip
|
||||
key={viewFilter.fieldMetadataId}
|
||||
testId={viewFilter.fieldMetadataId}
|
||||
key={viewFilter.id}
|
||||
testId={viewFilter.id}
|
||||
labelKey={viewFilter.definition.label}
|
||||
labelValue={`${getOperandLabelShort(viewFilter.operand)} ${
|
||||
viewFilter.displayValue
|
||||
|
||||
@ -62,13 +62,13 @@ export const EditableFilterDropdownButton = ({
|
||||
const handleRemove = () => {
|
||||
closeDropdown();
|
||||
|
||||
removeCombinedViewFilter(viewFilter.fieldMetadataId);
|
||||
removeCombinedViewFilter(viewFilter.id);
|
||||
};
|
||||
|
||||
const handleDropdownClickOutside = useCallback(() => {
|
||||
const { value, fieldMetadataId } = viewFilter;
|
||||
const { id: fieldId, value } = viewFilter;
|
||||
if (!value) {
|
||||
removeCombinedViewFilter(fieldMetadataId);
|
||||
removeCombinedViewFilter(fieldId);
|
||||
}
|
||||
}, [viewFilter, removeCombinedViewFilter]);
|
||||
|
||||
|
||||
@ -153,19 +153,17 @@ export const ViewBarDetails = ({
|
||||
availableFilterDefinitions,
|
||||
).map((viewFilter) => (
|
||||
<ObjectFilterDropdownScope
|
||||
key={viewFilter.fieldMetadataId}
|
||||
filterScopeId={viewFilter.fieldMetadataId}
|
||||
key={viewFilter.id}
|
||||
filterScopeId={viewFilter.id}
|
||||
>
|
||||
<DropdownScope dropdownScopeId={viewFilter.fieldMetadataId}>
|
||||
<ViewBarFilterEffect
|
||||
filterDropdownId={viewFilter.fieldMetadataId}
|
||||
/>
|
||||
<DropdownScope dropdownScopeId={viewFilter.id}>
|
||||
<ViewBarFilterEffect filterDropdownId={viewFilter.id} />
|
||||
<EditableFilterDropdownButton
|
||||
viewFilter={viewFilter}
|
||||
hotkeyScope={{
|
||||
scope: viewFilter.fieldMetadataId,
|
||||
scope: viewFilter.id,
|
||||
}}
|
||||
viewFilterDropdownId={viewFilter.fieldMetadataId}
|
||||
viewFilterDropdownId={viewFilter.id}
|
||||
/>
|
||||
</DropdownScope>
|
||||
</ObjectFilterDropdownScope>
|
||||
|
||||
@ -6,6 +6,7 @@ import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/
|
||||
import { Filter } from '@/object-record/object-filter-dropdown/types/Filter';
|
||||
import { useViewStates } from '@/views/hooks/internal/useViewStates';
|
||||
import { useCombinedViewFilters } from '@/views/hooks/useCombinedViewFilters';
|
||||
import { useGetCurrentView } from '@/views/hooks/useGetCurrentView';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
type ViewBarFilterEffectProps = {
|
||||
@ -15,11 +16,12 @@ type ViewBarFilterEffectProps = {
|
||||
export const ViewBarFilterEffect = ({
|
||||
filterDropdownId,
|
||||
}: ViewBarFilterEffectProps) => {
|
||||
const { availableFilterDefinitionsState, unsavedToUpsertViewFiltersState } =
|
||||
useViewStates();
|
||||
const { availableFilterDefinitionsState } = useViewStates();
|
||||
|
||||
const { upsertCombinedViewFilter } = useCombinedViewFilters();
|
||||
|
||||
const { currentViewWithCombinedFiltersAndSorts } = useGetCurrentView();
|
||||
|
||||
const availableFilterDefinitions = useRecoilValue(
|
||||
availableFilterDefinitionsState,
|
||||
);
|
||||
@ -51,47 +53,41 @@ export const ViewBarFilterEffect = ({
|
||||
upsertCombinedViewFilter,
|
||||
]);
|
||||
|
||||
const unsavedToUpsertViewFilters = useRecoilValue(
|
||||
unsavedToUpsertViewFiltersState,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (filterDefinitionUsedInDropdown?.type === 'RELATION') {
|
||||
const viewFilterUsedInDropdown = unsavedToUpsertViewFilters.find(
|
||||
(filter) =>
|
||||
filter.fieldMetadataId ===
|
||||
filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
);
|
||||
const viewFilterUsedInDropdown =
|
||||
currentViewWithCombinedFiltersAndSorts?.viewFilters.find(
|
||||
(filter) =>
|
||||
filter.fieldMetadataId ===
|
||||
filterDefinitionUsedInDropdown?.fieldMetadataId,
|
||||
);
|
||||
|
||||
const viewFilterSelectedRecordIds = isNonEmptyString(
|
||||
const viewFilterSelectedRecords = isNonEmptyString(
|
||||
viewFilterUsedInDropdown?.value,
|
||||
)
|
||||
? JSON.parse(viewFilterUsedInDropdown.value)
|
||||
: [];
|
||||
|
||||
setObjectFilterDropdownSelectedRecordIds(viewFilterSelectedRecordIds);
|
||||
setObjectFilterDropdownSelectedRecordIds(viewFilterSelectedRecords);
|
||||
} else if (filterDefinitionUsedInDropdown?.type === 'SELECT') {
|
||||
const viewFilterUsedInDropdown = unsavedToUpsertViewFilters.find(
|
||||
(filter) =>
|
||||
filter.fieldMetadataId ===
|
||||
filterDefinitionUsedInDropdown.fieldMetadataId,
|
||||
);
|
||||
const viewFilterUsedInDropdown =
|
||||
currentViewWithCombinedFiltersAndSorts?.viewFilters.find(
|
||||
(filter) =>
|
||||
filter.fieldMetadataId ===
|
||||
filterDefinitionUsedInDropdown?.fieldMetadataId,
|
||||
);
|
||||
|
||||
const viewFilterSelectedOptionValues = isNonEmptyString(
|
||||
const viewFilterSelectedRecords = isNonEmptyString(
|
||||
viewFilterUsedInDropdown?.value,
|
||||
)
|
||||
? JSON.parse(viewFilterUsedInDropdown.value)
|
||||
: [];
|
||||
|
||||
setObjectFilterDropdownSelectedOptionValues(
|
||||
viewFilterSelectedOptionValues,
|
||||
);
|
||||
setObjectFilterDropdownSelectedOptionValues(viewFilterSelectedRecords);
|
||||
}
|
||||
}, [
|
||||
filterDefinitionUsedInDropdown,
|
||||
setObjectFilterDropdownSelectedRecordIds,
|
||||
setObjectFilterDropdownSelectedOptionValues,
|
||||
unsavedToUpsertViewFilters,
|
||||
currentViewWithCombinedFiltersAndSorts,
|
||||
]);
|
||||
|
||||
return <></>;
|
||||
|
||||
Reference in New Issue
Block a user