diff --git a/web/components/issues/issue-layouts/list/base-list-root.tsx b/web/components/issues/issue-layouts/list/base-list-root.tsx index 10f3582f1..933fed972 100644 --- a/web/components/issues/issue-layouts/list/base-list-root.tsx +++ b/web/components/issues/issue-layouts/list/base-list-root.tsx @@ -119,25 +119,23 @@ export const BaseListRoot = observer((props: IBaseListRoot) => { ); return ( - <> -
- -
- +
+ +
); }); diff --git a/web/components/issues/issue-layouts/list/block.tsx b/web/components/issues/issue-layouts/list/block.tsx index b2222a69e..04e7c4052 100644 --- a/web/components/issues/issue-layouts/list/block.tsx +++ b/web/components/issues/issue-layouts/list/block.tsx @@ -48,56 +48,50 @@ export const IssueBlock: React.FC = observer((props: IssueBlock const projectDetails = getProjectById(issue.project_id); return ( - <> -
+ {displayProperties && displayProperties?.key && ( +
+ {projectDetails?.identifier}-{issue.sequence_id} +
+ )} + + {issue?.tempId !== undefined && ( +
+ )} + + handleIssuePeekOverview(issue)} + className="w-full line-clamp-1 cursor-pointer text-sm text-custom-text-100" > - {displayProperties && displayProperties?.key && ( -
- {projectDetails?.identifier}-{issue.sequence_id} + + {issue.name} + + + +
+ {!issue?.tempId ? ( + <> + + {quickActions(issue)} + + ) : ( +
+
)} - - {issue?.tempId !== undefined && ( -
- )} - - handleIssuePeekOverview(issue)} - className="w-full line-clamp-1 cursor-pointer text-sm text-custom-text-100" - > - - {issue.name} - - - -
- {!issue?.tempId ? ( - <> - - {quickActions(issue)} - - ) : ( -
- -
- )} -
- +
); }); diff --git a/web/components/issues/issue-layouts/list/default.tsx b/web/components/issues/issue-layouts/list/default.tsx index 95e31b758..cf4b8970b 100644 --- a/web/components/issues/issue-layouts/list/default.tsx +++ b/web/components/issues/issue-layouts/list/default.tsx @@ -1,5 +1,5 @@ // components -import { IssueBlocksList, ListQuickAddIssueForm } from "components/issues"; +import { IssueBlock, IssueBlocksList, ListQuickAddIssueForm } from "components/issues"; // hooks import { useLabel, useMember, useProject, useProjectState } from "hooks/store"; // types @@ -10,12 +10,15 @@ import { IIssueDisplayProperties, TIssueMap, TUnGroupedIssues, + IIssueListRow, } from "@plane/types"; import { EIssueActions } from "../types"; // constants import { HeaderGroupByCard } from "./headers/group-by-card"; -import { getGroupByColumns } from "../utils"; -import { TCreateModalStoreTypes } from "constants/issue"; +import { getGroupByColumns, getIssueFlatList } from "../utils"; +import { EIssueListRow, TCreateModalStoreTypes } from "constants/issue"; +import { useRef } from "react"; +import RenderIfVisible from "components/core/render-if-visible-HOC"; export interface IGroupByList { issueIds: TGroupedIssues | TUnGroupedIssues | any; @@ -62,9 +65,11 @@ const GroupByList: React.FC = (props) => { const label = useLabel(); const projectState = useProjectState(); - const list = getGroupByColumns(group_by as GroupByColumnTypes, project, label, projectState, member, true); + const containerRef = useRef(null); - if (!list) return null; + const groups = getGroupByColumns(group_by as GroupByColumnTypes, project, label, projectState, member, true); + + if (!groups) return null; const prePopulateQuickAddData = (groupByKey: string | null, value: any) => { const defaultState = projectState.projectStates?.find((state) => state.default); @@ -91,59 +96,82 @@ const GroupByList: React.FC = (props) => { return preloadedData; }; - const validateEmptyIssueGroups = (issues: TIssue[]) => { - const issuesCount = issues?.length || 0; - if (!showEmptyGroup && issuesCount <= 0) return false; - return true; - }; + const list = getIssueFlatList(groups, issueIds, !!showEmptyGroup); + + console.log(groups, issueIds, list); const is_list = group_by === null ? true : false; const isGroupByCreatedBy = group_by === "created_by"; return ( -
+
{list && list.length > 0 && - list.map( - (_list: any) => - validateEmptyIssueGroups(is_list ? issueIds : issueIds?.[_list.id]) && ( -
-
+ list.map((listRow: IIssueListRow) => { + switch (listRow.type) { + case EIssueListRow.HEADER: + return ( +
- - {issueIds && ( - - )} - - {enableIssueQuickAdd && !disableIssueCreation && !isGroupByCreatedBy && ( -
+ ); + case EIssueListRow.QUICK_ADD: + if (enableIssueQuickAdd && !disableIssueCreation && !isGroupByCreatedBy) + return ( +
- )} -
- ) - )} + ); + else return null; + case EIssueListRow.NO_ISSUES: + const noIssuesRow = listRow as IIssueListRow; + return ( +
+ No issues +
+ ); + case EIssueListRow.ISSUE: + return ( + + + + ); + } + })}
); }; @@ -209,3 +237,5 @@ export const List: React.FC = (props) => {
); }; + +