feat(filters): enhance labels and members filter dropdowns
- Added useEffect to fetch labels when the component mounts or projectId changes in LabelsFilterDropdown. - Improved members filter logic to only sync board members when the board task assignees are empty. - Cleaned up redundant checks and optimized dependencies in the members filter dropdown.
This commit is contained in:
@@ -11,7 +11,7 @@ import List from 'antd/es/list';
|
|||||||
import Space from 'antd/es/space';
|
import Space from 'antd/es/space';
|
||||||
import { useSearchParams } from 'react-router-dom';
|
import { useSearchParams } from 'react-router-dom';
|
||||||
|
|
||||||
import { useMemo, useRef, useState } from 'react';
|
import { useMemo, useRef, useState, useEffect } from 'react';
|
||||||
import { useAppSelector } from '@/hooks/useAppSelector';
|
import { useAppSelector } from '@/hooks/useAppSelector';
|
||||||
import { colors } from '@/styles/colors';
|
import { colors } from '@/styles/colors';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
@@ -36,6 +36,13 @@ const LabelsFilterDropdown = () => {
|
|||||||
const tab = searchParams.get('tab');
|
const tab = searchParams.get('tab');
|
||||||
const projectView = tab === 'tasks-list' ? 'list' : 'kanban';
|
const projectView = tab === 'tasks-list' ? 'list' : 'kanban';
|
||||||
|
|
||||||
|
// Fetch labels when component mounts or projectId changes
|
||||||
|
useEffect(() => {
|
||||||
|
if (projectId) {
|
||||||
|
dispatch(fetchLabelsByProject(projectId));
|
||||||
|
}
|
||||||
|
}, [dispatch, projectId]);
|
||||||
|
|
||||||
const filteredLabelData = useMemo(() => {
|
const filteredLabelData = useMemo(() => {
|
||||||
if (projectView === 'list') {
|
if (projectView === 'list') {
|
||||||
return labels.filter(label => label.name?.toLowerCase().includes(searchQuery.toLowerCase()));
|
return labels.filter(label => label.name?.toLowerCase().includes(searchQuery.toLowerCase()));
|
||||||
@@ -81,9 +88,6 @@ const LabelsFilterDropdown = () => {
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
labelInputRef.current?.focus();
|
labelInputRef.current?.focus();
|
||||||
}, 0);
|
}, 0);
|
||||||
if (projectView === 'kanban') {
|
|
||||||
dispatch(setBoardLabels(labels));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ const MembersFilterDropdown = () => {
|
|||||||
|
|
||||||
const handleSelectedFiltersCount = useCallback(async (memberId: string | undefined, checked: boolean) => {
|
const handleSelectedFiltersCount = useCallback(async (memberId: string | undefined, checked: boolean) => {
|
||||||
if (!memberId || !projectId) return;
|
if (!memberId || !projectId) return;
|
||||||
if (!memberId || !projectId) return;
|
|
||||||
|
|
||||||
const updateMembers = async (members: Member[], setAction: any, fetchAction: any) => {
|
const updateMembers = async (members: Member[], setAction: any, fetchAction: any) => {
|
||||||
const updatedMembers = members.map(member =>
|
const updatedMembers = members.map(member =>
|
||||||
@@ -142,11 +141,12 @@ const MembersFilterDropdown = () => {
|
|||||||
const handleMembersDropdownOpen = useCallback((open: boolean) => {
|
const handleMembersDropdownOpen = useCallback((open: boolean) => {
|
||||||
if (open) {
|
if (open) {
|
||||||
setTimeout(() => membersInputRef.current?.focus(), 0);
|
setTimeout(() => membersInputRef.current?.focus(), 0);
|
||||||
if (taskAssignees.length) {
|
// Only sync the members if board members are empty
|
||||||
|
if (projectView === 'kanban' && boardTaskAssignees.length === 0 && taskAssignees.length > 0) {
|
||||||
dispatch(setBoardMembers(taskAssignees));
|
dispatch(setBoardMembers(taskAssignees));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [dispatch, taskAssignees]);
|
}, [dispatch, taskAssignees, boardTaskAssignees, projectView]);
|
||||||
|
|
||||||
const buttonStyle = {
|
const buttonStyle = {
|
||||||
backgroundColor: selectedCount > 0
|
backgroundColor: selectedCount > 0
|
||||||
|
|||||||
Reference in New Issue
Block a user