Skip to content

Commit 5a4bb07

Browse files
committed
add loading overlay; fix playwright install
1 parent e93df83 commit 5a4bb07

File tree

2 files changed

+44
-39
lines changed

2 files changed

+44
-39
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ test_unit: install_test_deps
7575
yarn test:unit
7676

7777
test_e2e: install_test_deps
78+
yarn playwright install
7879
yarn test:e2e
7980

8081
dev_health_check:

src/ui/pages/iam/GroupMemberManagement.tsx

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { IconTrash, IconUserPlus } from '@tabler/icons-react';
1616
import { notifications } from '@mantine/notifications';
1717
import { GroupMemberGetResponse, EntraActionResponse } from '@common/types/iam';
18+
import FullScreenLoader from '@ui/components/AuthContext/LoadingScreen';
1819

1920
interface GroupMemberManagementProps {
2021
fetchMembers: () => Promise<GroupMemberGetResponse>;
@@ -29,7 +30,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
2930
const [toAdd, setToAdd] = useState<string[]>([]);
3031
const [toRemove, setToRemove] = useState<string[]>([]);
3132
const [email, setEmail] = useState('');
32-
const [isLoading, setIsLoading] = useState(false);
33+
const [isLoading, setIsLoading] = useState(true);
3334
const [confirmationModal, setConfirmationModal] = useState(false);
3435

3536
useEffect(() => {
@@ -46,6 +47,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
4647
}
4748
};
4849
loadMembers();
50+
setIsLoading(false);
4951
}, [fetchMembers]);
5052

5153
const handleAddMember = () => {
@@ -132,7 +134,6 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
132134
setIsLoading(false);
133135
}
134136
};
135-
136137
return (
137138
<Box p="md">
138139
<Text fw={500} mb={4}>
@@ -145,44 +146,47 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
145146
Current Members
146147
</Text>
147148
<ScrollArea style={{ height: 250 }}>
148-
<List spacing="sm">
149-
{members.map((member) => (
150-
<ListItem key={member.email}>
151-
<Group justify="space-between">
152-
<Box>
153-
<Text size="sm">
154-
{member.name} ({member.email})
155-
</Text>
156-
{toRemove.includes(member.email) && (
157-
<Badge color="red" size="sm">
158-
Queued for removal
149+
{isLoading && <FullScreenLoader />}
150+
{!isLoading && (
151+
<List spacing="sm">
152+
{members.map((member) => (
153+
<ListItem key={member.email}>
154+
<Group justify="space-between">
155+
<Box>
156+
<Text size="sm">
157+
{member.name} ({member.email})
158+
</Text>
159+
{toRemove.includes(member.email) && (
160+
<Badge color="red" size="sm">
161+
Queued for removal
162+
</Badge>
163+
)}
164+
</Box>
165+
<ActionIcon
166+
color="red"
167+
variant="light"
168+
onClick={() => handleRemoveMember(member.email)}
169+
data-testid={`remove-exec-member-${member.email}`}
170+
>
171+
<IconTrash size={16} />
172+
</ActionIcon>
173+
</Group>
174+
</ListItem>
175+
))}
176+
{toAdd.map((member) => (
177+
<ListItem key={member}>
178+
<Group justify="space-between">
179+
<Box>
180+
<Text size="sm">{member}</Text>
181+
<Badge color="green" size="sm">
182+
Queued for addition
159183
</Badge>
160-
)}
161-
</Box>
162-
<ActionIcon
163-
color="red"
164-
variant="light"
165-
onClick={() => handleRemoveMember(member.email)}
166-
data-testid={`remove-exec-member-${member.email}`}
167-
>
168-
<IconTrash size={16} />
169-
</ActionIcon>
170-
</Group>
171-
</ListItem>
172-
))}
173-
{toAdd.map((member) => (
174-
<ListItem key={member}>
175-
<Group justify="space-between">
176-
<Box>
177-
<Text size="sm">{member}</Text>
178-
<Badge color="green" size="sm">
179-
Queued for addition
180-
</Badge>
181-
</Box>
182-
</Group>
183-
</ListItem>
184-
))}
185-
</List>
184+
</Box>
185+
</Group>
186+
</ListItem>
187+
))}
188+
</List>
189+
)}
186190
</ScrollArea>
187191
</Box>
188192

0 commit comments

Comments
 (0)