From 5683d94d0c6f9d4c48e63afbf6c859d901136a24 Mon Sep 17 00:00:00 2001 From: gakshita Date: Tue, 11 Feb 2025 16:09:27 +0530 Subject: [PATCH 1/2] fix: Handled workspace switcher closing on click --- .../workspace/sidebar/dropdown-item.tsx | 5 +++- .../components/workspace/sidebar/dropdown.tsx | 25 +++++-------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/web/core/components/workspace/sidebar/dropdown-item.tsx b/web/core/components/workspace/sidebar/dropdown-item.tsx index 183a8fdb396..7638b657276 100644 --- a/web/core/components/workspace/sidebar/dropdown-item.tsx +++ b/web/core/components/workspace/sidebar/dropdown-item.tsx @@ -19,9 +19,10 @@ type TProps = { activeWorkspace: IWorkspace | null; handleItemClick: () => void; handleWorkspaceNavigation: (workspace: IWorkspace) => void; + handleClose: () => void; }; const SidebarDropdownItem = observer((props: TProps) => { - const { workspace, activeWorkspace, handleItemClick, handleWorkspaceNavigation } = props; + const { workspace, activeWorkspace, handleItemClick, handleWorkspaceNavigation, handleClose } = props; // router const { workspaceSlug } = useParams(); // hooks @@ -89,6 +90,7 @@ const SidebarDropdownItem = observer((props: TProps) => {
@@ -96,6 +98,7 @@ const SidebarDropdownItem = observer((props: TProps) => { diff --git a/web/core/components/workspace/sidebar/dropdown.tsx b/web/core/components/workspace/sidebar/dropdown.tsx index 8d131594840..ac9acf42e5b 100644 --- a/web/core/components/workspace/sidebar/dropdown.tsx +++ b/web/core/components/workspace/sidebar/dropdown.tsx @@ -46,20 +46,10 @@ export const SidebarDropdown = observer(() => { // popper-js init const { styles, attributes } = usePopper(referenceElement, popperElement, { placement: "right", - modifiers: [ - { - name: "preventOverflow", - options: { - padding: 12, - }, - }, - ], + modifiers: [{ name: "preventOverflow", options: { padding: 12 } }], }); - const handleWorkspaceNavigation = (workspace: IWorkspace) => - updateUserProfile({ - last_workspace_id: workspace?.id, - }); + const handleWorkspaceNavigation = (workspace: IWorkspace) => updateUserProfile({ last_workspace_id: workspace?.id }); const handleSignOut = async () => { await signOut().catch(() => @@ -86,14 +76,12 @@ export const SidebarDropdown = observer(() => { "flex-grow-0 justify-center": sidebarCollapsed, })} > - {({ open }) => ( + {({ open, close }) => ( <>
@@ -108,9 +96,7 @@ export const SidebarDropdown = observer(() => {
From 7677b2652a8f27aa7adc99ab7a2d24ad097d1875 Mon Sep 17 00:00:00 2001 From: gakshita Date: Tue, 18 Feb 2025 12:27:45 +0530 Subject: [PATCH 2/2] fix: home quickstart widget --- .../home/widgets/empty-states/no-projects.tsx | 68 ++++++++++++------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/web/core/components/home/widgets/empty-states/no-projects.tsx b/web/core/components/home/widgets/empty-states/no-projects.tsx index 84d7b638bce..44496aa81c4 100644 --- a/web/core/components/home/widgets/empty-states/no-projects.tsx +++ b/web/core/components/home/widgets/empty-states/no-projects.tsx @@ -12,7 +12,14 @@ import { useTranslation } from "@plane/i18n"; import { cn } from "@plane/utils"; import { getFileURL } from "@/helpers/file.helper"; // hooks -import { useCommandPalette, useEventTracker, useProject, useUser, useUserPermissions } from "@/hooks/store"; +import { + useCommandPalette, + useEventTracker, + useProject, + useUser, + useUserPermissions, + useWorkspace, +} from "@/hooks/store"; // plane web constants export const NoProjectsEmptyState = observer(() => { @@ -24,6 +31,7 @@ export const NoProjectsEmptyState = observer(() => { const { setTrackElement } = useEventTracker(); const { data: currentUser } = useUser(); const { joinedProjectIds } = useProject(); + const { currentWorkspace: activeWorkspace } = useWorkspace(); // local storage const { storedValue, setValue } = useLocalStorage(`quickstart-guide-${workspaceSlug}`, { hide: false, @@ -37,6 +45,7 @@ export const NoProjectsEmptyState = observer(() => { [EUserPermissions.ADMIN, EUserPermissions.MEMBER], EUserPermissionsLevel.WORKSPACE ); + const isWorkspaceAdmin = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE); const EMPTY_STATE_DATA = [ { @@ -54,6 +63,7 @@ export const NoProjectsEmptyState = observer(() => { setTrackElement("Sidebar"); toggleCreateProjectModal(true); }, + disabled: !canCreateProject, }, }, { @@ -65,6 +75,7 @@ export const NoProjectsEmptyState = observer(() => { cta: { text: "home.empty.invite_team.cta", link: `/${workspaceSlug}/settings/members`, + disabled: !isWorkspaceAdmin, }, }, { @@ -76,6 +87,7 @@ export const NoProjectsEmptyState = observer(() => { cta: { text: "home.empty.configure_workspace.cta", link: "settings", + disabled: !isWorkspaceAdmin, }, }, { @@ -104,6 +116,7 @@ export const NoProjectsEmptyState = observer(() => { cta: { text: "home.empty.personalize_account.cta", link: "/profile", + disabled: false, }, }, ]; @@ -112,7 +125,7 @@ export const NoProjectsEmptyState = observer(() => { case "projects": return joinedProjectIds?.length > 0; case "visited_members": - return storedValue?.visited_members; + return (activeWorkspace?.total_members || 0) >= 2; case "visited_workspace": return storedValue?.visited_workspace; case "visited_profile": @@ -120,7 +133,7 @@ export const NoProjectsEmptyState = observer(() => { } }; - if (storedValue?.hide) return null; + if (storedValue?.hide || (joinedProjectIds?.length > 0 && (activeWorkspace?.total_members || 0) >= 2)) return null; return (
@@ -161,28 +174,35 @@ export const NoProjectsEmptyState = observer(() => {
- ) : item.cta.link ? ( - { - if (!storedValue) return; - setValue({ - ...storedValue, - [item.flag]: true, - }); - }} - className="text-custom-primary-100 hover:text-custom-primary-200 text-sm font-medium" - > - {t(item.cta.text)} - ) : ( - + !item.cta.disabled && + (item.cta.link ? ( + { + if (!storedValue) { + e.stopPropagation(); + e.preventDefault(); + return; + } + setValue({ + ...storedValue, + [item.flag]: true, + }); + }} + className={cn("text-custom-primary-100 hover:text-custom-primary-200 text-sm font-medium", {})} + > + {t(item.cta.text)} + + ) : ( + + )) )}
);