@@ -7,10 +7,11 @@ import {
77 useToast ,
88 Notification ,
99 Button ,
10+ getColor ,
1011 MD ,
1112} from '@appquality/unguess-design-system' ;
1213import { useAppSelector } from 'src/app/hooks' ;
13- import { useTranslation } from 'react-i18next' ;
14+ import { Trans , useTranslation } from 'react-i18next' ;
1415import {
1516 useDeleteCampaignsByCidUsersMutation ,
1617 useGetCampaignsByCidQuery ,
@@ -22,6 +23,9 @@ import {
2223import { FormikHelpers } from 'formik' ;
2324import { ReactComponent as UsersIcon } from 'src/assets/icons/users-share.svg' ;
2425import { useState } from 'react' ;
26+ import { ReactComponent as CampaignsIcon } from 'src/assets/icons/campaign-icon.svg' ;
27+ import { ReactComponent as ProjectsIcon } from 'src/assets/icons/project-icon.svg' ;
28+ import { ReactComponent as WorkspacesIcon } from 'src/assets/icons/workspace-icon.svg' ;
2529import { AddNewMemberInput } from './addNewMember' ;
2630import { UserItem } from './userItem' ;
2731import { PermissionSettingsFooter } from './modalFooter' ;
@@ -30,6 +34,9 @@ import {
3034 FlexContainer ,
3135 SettingsDivider ,
3236 StyledAccordion ,
37+ UsersLabel ,
38+ UsersContainer ,
39+ StyledAccordionPanel ,
3340} from './styled' ;
3441
3542export const CampaignSettings = ( ) => {
@@ -63,6 +70,7 @@ export const CampaignSettings = () => {
6370 isFetching : isFetchingProjectUsers ,
6471 data : projectUsers ,
6572 refetch : refetchProjectUsers ,
73+ error : projectUsersError ,
6674 } = useGetProjectsByPidUsersQuery ( {
6775 pid : campaign ?. project . id . toString ( ) || '0' ,
6876 } ) ;
@@ -72,6 +80,7 @@ export const CampaignSettings = () => {
7280 isFetching : isFetchingWorkspaceUsers ,
7381 data : workspaceUsers ,
7482 refetch : refetchWorkspaceUsers ,
83+ error : workspaceUsersError ,
7584 } = useGetWorkspacesByWidUsersQuery ( {
7685 wid : activeWorkspace ?. id . toString ( ) || '0' ,
7786 } ) ;
@@ -197,8 +206,21 @@ export const CampaignSettings = () => {
197206 </ FixedBody >
198207 < SettingsDivider />
199208 < Modal . Body style = { { paddingTop : 0 , paddingBottom : 0 } } >
200- < Label >
201- { t ( '__PERMISSION_SETTINGS_BODY_TITLE' ) } { usersCount }
209+ < Label style = { { color : appTheme . palette . grey [ 700 ] } } >
210+ < Trans i18nKey = "__PERMISSION_SETTINGS_BODY_TITLE" >
211+ Already shared with{ ' ' }
212+ < Span
213+ isBold
214+ style = { {
215+ color : getColor ( appTheme . colors . primaryHue , 600 ) ,
216+ } }
217+ >
218+ { {
219+ users_count : usersCount ,
220+ } } { ' ' }
221+ people
222+ </ Span >
223+ </ Trans >
202224 </ Label >
203225 < FlexContainer
204226 isLoading = {
@@ -212,104 +234,138 @@ export const CampaignSettings = () => {
212234 isFetchingWorkspaceUsers
213235 }
214236 >
215- < StyledAccordion
216- level = { 3 }
217- key = "campaign_users_accordion"
218- isAnimated
219- isExpandable
220- { ...( campaignCount === 0 && { isDisabled : true } ) }
221- >
222- < StyledAccordion . Section >
223- < StyledAccordion . Header >
224- < StyledAccordion . Label style = { { padding : 0 } } >
225- < MD isBold >
226- < UsersIcon
227- style = { {
228- color : appTheme . palette . grey [ 600 ] ,
229- marginRight : appTheme . space . xs ,
230- } }
231- />
232- { t ( '__PERMISSION_SETTINGS_CAMPAIGN_USERS' ) } (
233- { campaignCount } )
234- </ MD >
235- </ StyledAccordion . Label >
236- </ StyledAccordion . Header >
237- < StyledAccordion . Panel
238- style = { { padding : 0 , paddingTop : appTheme . space . sm } }
239- >
237+ { campaignCount > 0 && (
238+ < >
239+ < UsersLabel >
240+ < CampaignsIcon
241+ style = { {
242+ color : appTheme . palette . grey [ 600 ] ,
243+ marginRight : appTheme . space . xs ,
244+ } }
245+ />
246+ < MD isBold >
247+ { t ( '__PERMISSION_SETTINGS_CAMPAIGN_USERS' ) } { ' ' }
248+ < Span
249+ isBold = { false }
250+ style = { { color : appTheme . palette . grey [ 600 ] } }
251+ >
252+ ({ campaignCount } )
253+ </ Span >
254+ </ MD >
255+ </ UsersLabel >
256+ < UsersContainer >
240257 { campaignUsers ?. items . map ( ( user ) => (
241258 < UserItem
242259 key = { user . id }
243260 user = { user }
244261 onResendInvite = { ( ) => onResendInvite ( user . email ) }
245262 onRemoveUser = { ( ) => onRemoveUser ( user . id ) }
263+ showRemoveConfirm
246264 />
247265 ) ) }
248- </ StyledAccordion . Panel >
249- </ StyledAccordion . Section >
250- </ StyledAccordion >
251- < StyledAccordion
252- level = { 3 }
253- key = "project_users_accordion"
254- isAnimated
255- isExpandable
256- { ...( projectCount === 0 && { isDisabled : true } ) }
257- >
258- < StyledAccordion . Section >
259- < StyledAccordion . Header >
260- < StyledAccordion . Label style = { { padding : 0 } } >
261- < MD isBold >
262- < UsersIcon
263- style = { {
264- color : appTheme . palette . grey [ 600 ] ,
265- marginRight : appTheme . space . xs ,
266- } }
267- />
268- { t ( '__PERMISSION_SETTINGS_PROJECT_USERS' ) } (
269- { projectCount } )
270- </ MD >
271- </ StyledAccordion . Label >
272- </ StyledAccordion . Header >
273- < StyledAccordion . Panel
274- style = { { padding : 0 , paddingTop : appTheme . space . sm } }
275- >
276- { projectUsers ?. items . map ( ( user ) => (
277- < UserItem key = { user . id } user = { user } />
278- ) ) }
279- </ StyledAccordion . Panel >
280- </ StyledAccordion . Section >
281- </ StyledAccordion >
282- < StyledAccordion
283- level = { 3 }
284- key = "workspace_users_accordion"
285- isAnimated
286- isExpandable
287- { ...( workspaceCount === 0 && { isDisabled : true } ) }
288- >
289- < StyledAccordion . Section >
290- < StyledAccordion . Header >
291- < StyledAccordion . Label style = { { padding : 0 } } >
292- < MD isBold >
293- < UsersIcon
294- style = { {
295- color : appTheme . palette . grey [ 600 ] ,
296- marginRight : appTheme . space . xs ,
297- } }
298- />
299- { t ( '__PERMISSION_SETTINGS_WORKSPACE_USERS' ) } (
300- { workspaceCount } )
301- </ MD >
302- </ StyledAccordion . Label >
303- </ StyledAccordion . Header >
304- < StyledAccordion . Panel
305- style = { { padding : 0 , paddingTop : appTheme . space . sm } }
306- >
307- { workspaceUsers ?. items . map ( ( user ) => (
308- < UserItem key = { user . id } user = { user } />
309- ) ) }
310- </ StyledAccordion . Panel >
311- </ StyledAccordion . Section >
312- </ StyledAccordion >
266+ </ UsersContainer >
267+ </ >
268+ ) }
269+ { projectUsersError && (
270+ < UsersLabel >
271+ < ProjectsIcon
272+ style = { {
273+ color : appTheme . palette . grey [ 600 ] ,
274+ marginRight : appTheme . space . xs ,
275+ } }
276+ />
277+ < MD isBold > { t ( '__PERMISSION_SETTINGS_PROJECT_USERS_ALL' ) } </ MD >
278+ </ UsersLabel >
279+ ) }
280+ { projectCount > 0 && (
281+ < StyledAccordion
282+ level = { 3 }
283+ key = "project_users_accordion"
284+ isAnimated
285+ isExpandable
286+ { ...( projectCount === 0 && { isDisabled : true } ) }
287+ >
288+ < StyledAccordion . Section >
289+ < StyledAccordion . Header >
290+ < StyledAccordion . Label style = { { padding : 0 } } >
291+ < UsersLabel >
292+ < ProjectsIcon
293+ style = { {
294+ color : appTheme . palette . grey [ 600 ] ,
295+ marginRight : appTheme . space . xs ,
296+ } }
297+ />
298+ < MD isBold >
299+ { t ( '__PERMISSION_SETTINGS_PROJECT_USERS' ) } { ' ' }
300+ < Span
301+ isBold = { false }
302+ style = { { color : appTheme . palette . grey [ 600 ] } }
303+ >
304+ ({ projectCount } )
305+ </ Span >
306+ </ MD >
307+ </ UsersLabel >
308+ </ StyledAccordion . Label >
309+ </ StyledAccordion . Header >
310+ < StyledAccordionPanel >
311+ { projectUsers ?. items . map ( ( user ) => (
312+ < UserItem key = { user . id } user = { user } />
313+ ) ) }
314+ </ StyledAccordionPanel >
315+ </ StyledAccordion . Section >
316+ </ StyledAccordion >
317+ ) }
318+ { workspaceUsersError && (
319+ < UsersLabel >
320+ < WorkspacesIcon
321+ style = { {
322+ color : appTheme . palette . grey [ 600 ] ,
323+ marginRight : appTheme . space . xs ,
324+ } }
325+ />
326+ < MD isBold >
327+ { t ( '__PERMISSION_SETTINGS_WORKSPACE_USERS_ALL' ) }
328+ </ MD >
329+ </ UsersLabel >
330+ ) }
331+ { workspaceCount > 0 && (
332+ < StyledAccordion
333+ level = { 3 }
334+ key = "workspace_users_accordion"
335+ isAnimated
336+ isExpandable
337+ { ...( workspaceCount === 0 && { isDisabled : true } ) }
338+ >
339+ < StyledAccordion . Section >
340+ < StyledAccordion . Header >
341+ < StyledAccordion . Label style = { { padding : 0 } } >
342+ < UsersLabel >
343+ < WorkspacesIcon
344+ style = { {
345+ color : appTheme . palette . grey [ 600 ] ,
346+ marginRight : appTheme . space . xs ,
347+ } }
348+ />
349+ < MD isBold >
350+ { t ( '__PERMISSION_SETTINGS_WORKSPACE_USERS' ) } { ' ' }
351+ < Span
352+ isBold = { false }
353+ style = { { color : appTheme . palette . grey [ 600 ] } }
354+ >
355+ ({ workspaceCount } )
356+ </ Span >
357+ </ MD >
358+ </ UsersLabel >
359+ </ StyledAccordion . Label >
360+ </ StyledAccordion . Header >
361+ < StyledAccordionPanel >
362+ { workspaceUsers ?. items . map ( ( user ) => (
363+ < UserItem key = { user . id } user = { user } />
364+ ) ) }
365+ </ StyledAccordionPanel >
366+ </ StyledAccordion . Section >
367+ </ StyledAccordion >
368+ ) }
313369 </ FlexContainer >
314370 </ Modal . Body >
315371 < PermissionSettingsFooter />
0 commit comments