Feat/filter activity inbox (#1032)
* Move files * Add filtering for tasks inbox * Add filter dropdown for single entity * Minor * Fill empty button * Refine logic for filter dropdown * remove log * Fix unwanted change * Set current user as default filter * Add avatar on filter * Improve initialization of assignee filter * Add story for Tasks page * Add more stories * Add sotry with no tasks * Improve dates * Enh tests --------- Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
This commit is contained in:
@ -7,6 +7,7 @@ import {
|
||||
IconUser,
|
||||
IconUsers,
|
||||
} from '@/ui/icon/index';
|
||||
import { TableContext } from '@/ui/table/states/TableContext';
|
||||
import { icon } from '@/ui/theme/constants/icon';
|
||||
import { FilterDropdownUserSearchSelect } from '@/users/components/FilterDropdownUserSearchSelect';
|
||||
import { Company } from '~/generated/graphql';
|
||||
@ -49,6 +50,8 @@ export const companiesFilters: FilterDefinitionByEntity<Company>[] = [
|
||||
label: 'Account owner',
|
||||
icon: <IconUser size={icon.size.md} stroke={icon.stroke.sm} />,
|
||||
type: 'entity',
|
||||
entitySelectComponent: <FilterDropdownUserSearchSelect />,
|
||||
entitySelectComponent: (
|
||||
<FilterDropdownUserSearchSelect context={TableContext} />
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
import { useTheme } from '@emotion/react';
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
import { TaskGroups } from '@/tasks/components/TaskGroups';
|
||||
import { TasksContext } from '@/tasks/states/TasksContext';
|
||||
import { TaskGroups } from '@/activities/components/TaskGroups';
|
||||
import { TasksContext } from '@/activities/states/TasksContext';
|
||||
import { FilterDropdownButton } from '@/ui/filter-n-sort/components/FilterDropdownButton';
|
||||
import { FiltersHotkeyScope } from '@/ui/filter-n-sort/types/FiltersHotkeyScope';
|
||||
import { IconArchive, IconCheck, IconCheckbox } from '@/ui/icon/index';
|
||||
import { WithTopBarContainer } from '@/ui/layout/components/WithTopBarContainer';
|
||||
import { TabList } from '@/ui/tab/components/TabList';
|
||||
@ -52,6 +54,13 @@ export function Tasks() {
|
||||
<TabList context={TasksContext} tabs={TASK_TABS} />
|
||||
</StyledTabListContainer>
|
||||
}
|
||||
rightComponents={[
|
||||
<FilterDropdownButton
|
||||
key="tasks-filter-dropdown-button"
|
||||
context={TasksContext}
|
||||
HotkeyScope={FiltersHotkeyScope.FilterDropdownButton}
|
||||
/>,
|
||||
]}
|
||||
/>
|
||||
<TaskGroups />
|
||||
</RecoilScope>
|
||||
|
||||
26
front/src/pages/tasks/__stories__/Tasks.stories.tsx
Normal file
26
front/src/pages/tasks/__stories__/Tasks.stories.tsx
Normal file
@ -0,0 +1,26 @@
|
||||
import type { Meta, StoryObj } from '@storybook/react';
|
||||
|
||||
import {
|
||||
PageDecorator,
|
||||
type PageDecoratorArgs,
|
||||
} from '~/testing/decorators/PageDecorator';
|
||||
import { graphqlMocks } from '~/testing/graphqlMocks';
|
||||
|
||||
import { Tasks } from '../Tasks';
|
||||
|
||||
const meta: Meta<PageDecoratorArgs> = {
|
||||
title: 'Pages/Tasks/Default',
|
||||
component: Tasks,
|
||||
decorators: [PageDecorator],
|
||||
args: { currentPath: '/tasks' },
|
||||
parameters: {
|
||||
docs: { story: 'inline', iframeHeight: '500px' },
|
||||
msw: graphqlMocks,
|
||||
},
|
||||
};
|
||||
|
||||
export default meta;
|
||||
|
||||
export type Story = StoryObj<typeof Tasks>;
|
||||
|
||||
export const Default: Story = {};
|
||||
18
front/src/pages/tasks/tasks-filters.tsx
Normal file
18
front/src/pages/tasks/tasks-filters.tsx
Normal file
@ -0,0 +1,18 @@
|
||||
import { IconUser } from '@tabler/icons-react';
|
||||
|
||||
import { TasksContext } from '@/activities/states/TasksContext';
|
||||
import { FilterDefinitionByEntity } from '@/ui/filter-n-sort/types/FilterDefinitionByEntity';
|
||||
import { FilterDropdownUserSearchSelect } from '@/users/components/FilterDropdownUserSearchSelect';
|
||||
import { Activity } from '~/generated/graphql';
|
||||
|
||||
export const tasksFilters: FilterDefinitionByEntity<Activity>[] = [
|
||||
{
|
||||
field: 'assigneeId',
|
||||
label: 'Assignee',
|
||||
icon: <IconUser />,
|
||||
type: 'entity',
|
||||
entitySelectComponent: (
|
||||
<FilterDropdownUserSearchSelect context={TasksContext} />
|
||||
),
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user