forked from github/plane
fix: added empty project state when no project exists. (#2727)
* fix: added empty project state when no project exists * fix: duplicate import
This commit is contained in:
parent
6ebee05951
commit
2d71377722
@ -1,27 +1,49 @@
|
|||||||
|
// next
|
||||||
|
import { useRouter } from "next/router";
|
||||||
import { observer } from "mobx-react-lite";
|
import { observer } from "mobx-react-lite";
|
||||||
import { PlusIcon } from "lucide-react";
|
|
||||||
// mobx store
|
// mobx store
|
||||||
import { useMobxStore } from "lib/mobx/store-provider";
|
import { useMobxStore } from "lib/mobx/store-provider";
|
||||||
// components
|
// components
|
||||||
import { EmptyState } from "components/common";
|
import { EmptyState } from "components/common";
|
||||||
// assets
|
// assets
|
||||||
import emptyIssue from "public/empty-state/issue.svg";
|
import emptyIssue from "public/empty-state/issue.svg";
|
||||||
|
import emptyProject from "public/empty-state/project.svg";
|
||||||
|
// icons
|
||||||
|
import { Plus, PlusIcon } from "lucide-react";
|
||||||
|
|
||||||
export const GlobalViewEmptyState: React.FC = observer(() => {
|
export const GlobalViewEmptyState: React.FC = observer(() => {
|
||||||
const { commandPalette: commandPaletteStore } = useMobxStore();
|
const router = useRouter();
|
||||||
|
const { workspaceSlug } = router.query;
|
||||||
|
|
||||||
|
const { commandPalette: commandPaletteStore, project: projectStore } = useMobxStore();
|
||||||
|
|
||||||
|
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full w-full grid place-items-center">
|
<div className="h-full w-full grid place-items-center">
|
||||||
<EmptyState
|
{!projects || projects?.length === 0 ? (
|
||||||
title="View issues will appear here"
|
<EmptyState
|
||||||
description="Issues help you track individual pieces of work. With Issues, keep track of what's going on, who is working on it, and what's done."
|
image={emptyProject}
|
||||||
image={emptyIssue}
|
title="No projects yet"
|
||||||
primaryButton={{
|
description="Get started by creating your first project"
|
||||||
text: "New issue",
|
primaryButton={{
|
||||||
icon: <PlusIcon className="h-3 w-3" strokeWidth={2} />,
|
icon: <Plus className="h-4 w-4" />,
|
||||||
onClick: () => commandPaletteStore.toggleCreateIssueModal(true),
|
text: "New Project",
|
||||||
}}
|
onClick: () => commandPaletteStore.toggleCreateProjectModal(true),
|
||||||
/>
|
}}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<EmptyState
|
||||||
|
title="View issues will appear here"
|
||||||
|
description="Issues help you track individual pieces of work. With Issues, keep track of what's going on, who is working on it, and what's done."
|
||||||
|
image={emptyIssue}
|
||||||
|
primaryButton={{
|
||||||
|
text: "New issue",
|
||||||
|
icon: <PlusIcon className="h-3 w-3" strokeWidth={2} />,
|
||||||
|
onClick: () => commandPaletteStore.toggleCreateIssueModal(true),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -28,12 +28,15 @@ export const GlobalViewLayoutRoot: React.FC<Props> = observer((props) => {
|
|||||||
workspaceFilter: workspaceFilterStore,
|
workspaceFilter: workspaceFilterStore,
|
||||||
workspace: workspaceStore,
|
workspace: workspaceStore,
|
||||||
issueDetail: issueDetailStore,
|
issueDetail: issueDetailStore,
|
||||||
|
project: projectStore,
|
||||||
} = useMobxStore();
|
} = useMobxStore();
|
||||||
|
|
||||||
const viewDetails = globalViewId ? globalViewsStore.globalViewDetails[globalViewId.toString()] : undefined;
|
const viewDetails = globalViewId ? globalViewsStore.globalViewDetails[globalViewId.toString()] : undefined;
|
||||||
|
|
||||||
const storedFilters = globalViewId ? globalViewFiltersStore.storedFilters[globalViewId.toString()] : undefined;
|
const storedFilters = globalViewId ? globalViewFiltersStore.storedFilters[globalViewId.toString()] : undefined;
|
||||||
|
|
||||||
|
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
|
||||||
|
|
||||||
useSWR(
|
useSWR(
|
||||||
workspaceSlug && globalViewId && viewDetails ? `GLOBAL_VIEW_ISSUES_${globalViewId.toString()}` : null,
|
workspaceSlug && globalViewId && viewDetails ? `GLOBAL_VIEW_ISSUES_${globalViewId.toString()}` : null,
|
||||||
workspaceSlug && globalViewId && viewDetails
|
workspaceSlug && globalViewId && viewDetails
|
||||||
@ -94,7 +97,7 @@ export const GlobalViewLayoutRoot: React.FC<Props> = observer((props) => {
|
|||||||
return (
|
return (
|
||||||
<div className="relative w-full h-full flex flex-col overflow-hidden">
|
<div className="relative w-full h-full flex flex-col overflow-hidden">
|
||||||
<GlobalViewsAppliedFiltersRoot />
|
<GlobalViewsAppliedFiltersRoot />
|
||||||
{issues?.length === 0 ? (
|
{issues?.length === 0 || !projects || projects?.length === 0 ? (
|
||||||
<GlobalViewEmptyState />
|
<GlobalViewEmptyState />
|
||||||
) : (
|
) : (
|
||||||
<div className="h-full w-full overflow-auto">
|
<div className="h-full w-full overflow-auto">
|
||||||
|
Loading…
Reference in New Issue
Block a user