plane/apps/space/components/issues/navbar/issue-board-view.tsx

68 lines
2.4 KiB
TypeScript
Raw Normal View History

import { useRouter } from "next/router";
import { observer } from "mobx-react-lite";
// constants
import { issueViews } from "constants/data";
// interfaces
import { TIssueBoardKeys } from "store/types";
// mobx
import { useMobxStore } from "lib/mobx/store-provider";
import { RootStore } from "store/root";
export const NavbarIssueBoardView = observer(() => {
2023-08-30 13:03:18 +00:00
const { project: projectStore, issue: issueStore }: RootStore = useMobxStore();
const router = useRouter();
const { workspace_slug, project_slug } = router.query as { workspace_slug: string; project_slug: string };
2023-08-30 13:03:18 +00:00
const handleCurrentBoardView = (boardView: string) => {
projectStore.setActiveBoard(boardView);
router.replace(
`/${workspace_slug}/${project_slug}?board=${boardView}${
2023-08-30 13:03:18 +00:00
issueStore?.userSelectedLabels && issueStore?.userSelectedLabels.length > 0
? `&labels=${issueStore?.userSelectedLabels.join(",")}`
: ""
}${
2023-08-30 13:03:18 +00:00
issueStore?.userSelectedPriorities && issueStore?.userSelectedPriorities.length > 0
? `&priorities=${issueStore?.userSelectedPriorities.join(",")}`
: ""
}${
2023-08-30 13:03:18 +00:00
issueStore?.userSelectedStates && issueStore?.userSelectedStates.length > 0
? `&states=${issueStore?.userSelectedStates.join(",")}`
: ""
}`
);
};
return (
<>
2023-08-30 13:03:18 +00:00
{projectStore?.viewOptions &&
Object.keys(projectStore?.viewOptions).map((viewKey: string) => {
console.log("projectStore?.activeBoard", projectStore?.activeBoard);
console.log("viewKey", viewKey);
if (projectStore?.viewOptions[viewKey]) {
return (
<div
2023-08-30 13:03:18 +00:00
key={viewKey}
className={`w-[28px] h-[28px] flex justify-center items-center rounded-sm cursor-pointer ${
2023-08-30 13:03:18 +00:00
viewKey === projectStore?.activeBoard
? `bg-custom-background-80 text-custom-text-200`
: `hover:bg-custom-background-80 text-custom-text-300`
}`}
2023-08-30 13:03:18 +00:00
onClick={() => handleCurrentBoardView(viewKey)}
title={viewKey}
>
2023-08-30 13:03:18 +00:00
<span
className={`material-symbols-rounded text-[18px] ${
issueViews[viewKey]?.className ? issueViews[viewKey]?.className : ``
}`}
>
{issueViews[viewKey]?.icon}
</span>
</div>
2023-08-30 13:03:18 +00:00
);
}
})}
</>
);
});