diff --git a/web/app/[workspaceSlug]/(projects)/settings/members/page.tsx b/web/app/[workspaceSlug]/(projects)/settings/members/page.tsx index 0481fe556..52b225639 100644 --- a/web/app/[workspaceSlug]/(projects)/settings/members/page.tsx +++ b/web/app/[workspaceSlug]/(projects)/settings/members/page.tsx @@ -91,7 +91,7 @@ const WorkspaceMembersSettingsPage = observer(() => { onSubmit={handleWorkspaceInvite} />
-
+

Members

diff --git a/web/core/components/ui/loader/layouts/members-layout-loader.tsx b/web/core/components/ui/loader/layouts/members-layout-loader.tsx new file mode 100644 index 000000000..ae8363556 --- /dev/null +++ b/web/core/components/ui/loader/layouts/members-layout-loader.tsx @@ -0,0 +1,14 @@ +export const MembersLayoutLoader = () => ( +
+ {Array.from({ length: 5 }, (_, columnIndex) => ( +
+
+ +
+ {Array.from({ length: 2 }, (_, cardIndex) => ( + + ))} +
+ ))} +
+); diff --git a/web/core/components/workspace/settings/members-list-item.tsx b/web/core/components/workspace/settings/members-list-item.tsx index 2d9f0aad7..95a329606 100644 --- a/web/core/components/workspace/settings/members-list-item.tsx +++ b/web/core/components/workspace/settings/members-list-item.tsx @@ -1,11 +1,13 @@ "use client"; import { FC } from "react"; +import { isEmpty } from "lodash"; import { observer } from "mobx-react"; // ui import { IWorkspaceMember } from "@plane/types"; import { TOAST_TYPE, Table, setToast } from "@plane/ui"; // components +import { MembersLayoutLoader } from "@/components/ui/loader/layouts/members-layout-loader"; import { ConfirmWorkspaceMemberRemove } from "@/components/workspace"; // constants import { WORKSPACE_MEMBER_LEAVE } from "@/constants/event-tracker"; @@ -79,8 +81,10 @@ export const WorkspaceMembersListItem: FC = observer((props) => { // 2. only admin or member can change role // 3. user cannot change role of higher role + if (isEmpty(columns)) return ; + return ( - <> +
{removeMemberModal && ( 0} @@ -93,7 +97,7 @@ export const WorkspaceMembersListItem: FC = observer((props) => { /> )} member !== null) ?? []) as any} keyExtractor={(rowData) => rowData?.member.id ?? ""} tHeadClassName="border-b border-custom-border-100" @@ -102,6 +106,6 @@ export const WorkspaceMembersListItem: FC = observer((props) => { tBodyTrClassName="divide-x-0" tHeadTrClassName="divide-x-0" /> - + ); }); diff --git a/web/core/components/workspace/settings/members-list.tsx b/web/core/components/workspace/settings/members-list.tsx index 008acab20..9c19d2f8f 100644 --- a/web/core/components/workspace/settings/members-list.tsx +++ b/web/core/components/workspace/settings/members-list.tsx @@ -13,7 +13,7 @@ import { useMember } from "@/hooks/store"; export const WorkspaceMembersList: FC<{ searchQuery: string; isAdmin: boolean }> = observer((props) => { const { searchQuery, isAdmin } = props; - const [showPendingInvites, setShowPendingInvites] = useState(false); + const [showPendingInvites, setShowPendingInvites] = useState(true); // router const { workspaceSlug } = useParams();