From 4ca45a971c0ca60b3ed8ab6dca1fae2f8d6df1c9 Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Fri, 16 Aug 2024 16:48:00 +0530 Subject: [PATCH] chore: issue filters restructuring. (#5372) --- packages/types/src/view-props.d.ts | 8 ++++-- .../issues/filters/applied-filters/index.ts | 1 + .../filters/applied-filters/issue-types.tsx | 11 ++++++++ web/ce/components/issues/filters/index.ts | 2 ++ .../components/issues/filters/issue-types.tsx | 12 ++++++++ web/ce/components/issues/index.ts | 1 + .../filters/applied-filters/filters-list.tsx | 9 ++++++ .../filters/header/display-filters/index.ts | 2 +- .../{issue-type.tsx => issue-grouping.tsx} | 10 +++---- .../header/filters/filters-selection.tsx | 22 +++++++++++---- .../issues/issue-layouts/kanban/block.tsx | 10 ++----- web/core/constants/issue.ts | 28 +++++++++++++++---- .../helpers/issue-filter-helper.store.ts | 1 + .../issues/filters/active-filters/index.ts | 1 + .../filters/active-filters/issue-types.tsx | 1 + web/ee/components/issues/filters/index.ts | 2 ++ .../components/issues/filters/issue-types.tsx | 1 + web/ee/components/issues/index.ts | 1 + 18 files changed, 94 insertions(+), 29 deletions(-) create mode 100644 web/ce/components/issues/filters/applied-filters/index.ts create mode 100644 web/ce/components/issues/filters/applied-filters/issue-types.tsx create mode 100644 web/ce/components/issues/filters/index.ts create mode 100644 web/ce/components/issues/filters/issue-types.tsx rename web/core/components/issues/issue-layouts/filters/header/display-filters/{issue-type.tsx => issue-grouping.tsx} (79%) create mode 100644 web/ee/components/issues/filters/active-filters/index.ts create mode 100644 web/ee/components/issues/filters/active-filters/issue-types.tsx create mode 100644 web/ee/components/issues/filters/index.ts create mode 100644 web/ee/components/issues/filters/issue-types.tsx diff --git a/packages/types/src/view-props.d.ts b/packages/types/src/view-props.d.ts index 819cd56ea..6b0970cf6 100644 --- a/packages/types/src/view-props.d.ts +++ b/packages/types/src/view-props.d.ts @@ -51,7 +51,7 @@ export type TIssueOrderByOptions = | "sub_issues_count" | "-sub_issues_count"; -export type TIssueTypeFilters = "active" | "backlog" | null; +export type TIssueGroupingFilters = "active" | "backlog" | null; export type TIssueExtraOptions = "show_empty_groups" | "sub_issue"; @@ -76,7 +76,8 @@ export type TIssueParams = | "sub_issue" | "show_empty_groups" | "cursor" - | "per_page"; + | "per_page" + | "issue_type"; export type TCalendarLayouts = "month" | "week"; @@ -94,6 +95,7 @@ export interface IIssueFilterOptions { state_group?: string[] | null; subscriber?: string[] | null; target_date?: string[] | null; + issue_type?: string[] | null; } export interface IIssueDisplayFilterOptions { @@ -107,7 +109,7 @@ export interface IIssueDisplayFilterOptions { order_by?: TIssueOrderByOptions; show_empty_groups?: boolean; sub_issue?: boolean; - type?: TIssueTypeFilters; + type?: TIssueGroupingFilters; } export interface IIssueDisplayProperties { assignee?: boolean; diff --git a/web/ce/components/issues/filters/applied-filters/index.ts b/web/ce/components/issues/filters/applied-filters/index.ts new file mode 100644 index 000000000..592325823 --- /dev/null +++ b/web/ce/components/issues/filters/applied-filters/index.ts @@ -0,0 +1 @@ +export * from "./issue-types"; diff --git a/web/ce/components/issues/filters/applied-filters/issue-types.tsx b/web/ce/components/issues/filters/applied-filters/issue-types.tsx new file mode 100644 index 000000000..fd2daf9c8 --- /dev/null +++ b/web/ce/components/issues/filters/applied-filters/issue-types.tsx @@ -0,0 +1,11 @@ +"use client"; + +import { observer } from "mobx-react"; + +type Props = { + handleRemove: (val: string) => void; + values: string[]; + editable: boolean | undefined; +}; + +export const AppliedIssueTypeFilters: React.FC = observer(() => null); diff --git a/web/ce/components/issues/filters/index.ts b/web/ce/components/issues/filters/index.ts new file mode 100644 index 000000000..2cd80e3a7 --- /dev/null +++ b/web/ce/components/issues/filters/index.ts @@ -0,0 +1,2 @@ +export * from "./applied-filters"; +export * from "./issue-types"; diff --git a/web/ce/components/issues/filters/issue-types.tsx b/web/ce/components/issues/filters/issue-types.tsx new file mode 100644 index 000000000..bc364c8f8 --- /dev/null +++ b/web/ce/components/issues/filters/issue-types.tsx @@ -0,0 +1,12 @@ +"use client"; + +import React from "react"; +import { observer } from "mobx-react"; + +type Props = { + appliedFilters: string[] | null; + handleUpdate: (val: string) => void; + searchQuery: string; +}; + +export const FilterIssueTypes: React.FC = observer(() => null); diff --git a/web/ce/components/issues/index.ts b/web/ce/components/issues/index.ts index 3bc3bdbfd..97b57af4b 100644 --- a/web/ce/components/issues/index.ts +++ b/web/ce/components/issues/index.ts @@ -3,3 +3,4 @@ export * from "./worklog"; export * from "./issue-modal"; export * from "./issue-details"; export * from "./quick-add"; +export * from "./filters"; diff --git a/web/core/components/issues/issue-layouts/filters/applied-filters/filters-list.tsx b/web/core/components/issues/issue-layouts/filters/applied-filters/filters-list.tsx index c0d94dcbc..1227d0d4a 100644 --- a/web/core/components/issues/issue-layouts/filters/applied-filters/filters-list.tsx +++ b/web/core/components/issues/issue-layouts/filters/applied-filters/filters-list.tsx @@ -20,6 +20,8 @@ import { EUserProjectRoles } from "@/constants/project"; import { replaceUnderscoreIfSnakeCase } from "@/helpers/string.helper"; // hooks import { useUser } from "@/hooks/store"; +// plane web components +import { AppliedIssueTypeFilters } from "@/plane-web/components/issues"; type Props = { appliedFilters: IIssueFilterOptions; @@ -131,6 +133,13 @@ export const AppliedFiltersList: React.FC = observer((props) => { values={value} /> )} + {filterKey === "issue_type" && ( + handleRemoveFilter("issue_type", val)} + values={value} + /> + )} {isEditingAllowed && (