♻️💄 front: Use UserBlock from grouped rows in the access rights modal (and a bit of dark mode borders) (#50)
This commit is contained in:
committed by
ericlinagora
parent
035feada8d
commit
8d42c09b70
@@ -1,17 +0,0 @@
|
||||
import React, { Component } from 'react';
|
||||
import './elements.scss';
|
||||
import UserService from '@features/users/services/current-user-service';
|
||||
|
||||
export default class User extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<div className={'user_bloc ' + (this.props.mini ? 'mini ' : '')}>
|
||||
<div
|
||||
className="userimage"
|
||||
style={{ backgroundImage: "url('" + UserService.getThumbnail(this.props.data) + "')" }}
|
||||
/>
|
||||
{!this.props.mini && UserService.getFullName(this.props.data)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import UserBlock from '@molecules/grouped-rows/user';
|
||||
import { Input } from '@atoms/input/input-text';
|
||||
import { useSearchUsers } from '@features/users/hooks/use-search-user-list';
|
||||
import User from '@components/ui/user';
|
||||
import { Button } from '@atoms/button/button';
|
||||
import { UserType } from '@features/users/types/user';
|
||||
import { InputDecorationIcon } from '@atoms/input/input-decoration-icon';
|
||||
@@ -99,16 +99,13 @@ export default (props: {
|
||||
)}
|
||||
{shownResults.map((user, i) => {
|
||||
return (
|
||||
<div key={user.id} className={
|
||||
"rounded m-1 p-3 new-direct-channel-proposed-user flex flex-row items-center justify-center align-baseline"
|
||||
+ (i === selectedKeyIndex ? ' ring' : (i > 0 && i !== (selectedKeyIndex + 1) ? ' border-t' : ''))}>
|
||||
<div className="grow">
|
||||
<div className='font-bold'>
|
||||
<User data={user} />
|
||||
</div>
|
||||
<div className='ml-3 text-sm text-slate-500'>{user.email}</div>
|
||||
</div>
|
||||
<div className='shrink-0 ml-2'>
|
||||
<UserBlock
|
||||
key={user.id}
|
||||
user={user}
|
||||
className={
|
||||
"rounded m-1 p-3 new-direct-channel-proposed-user flex flex-row items-center justify-center align-baseline"
|
||||
+ (i === selectedKeyIndex ? ' ring' : (i > 0 && i !== (selectedKeyIndex + 1) ? ' border-t' : ''))}
|
||||
suffix={
|
||||
<Button
|
||||
onClick={() => {
|
||||
setUsers([user]);
|
||||
@@ -119,8 +116,8 @@ export default (props: {
|
||||
>
|
||||
{Languages.t('components.user_picker.modal.result_add.' + props.level)}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
{result.length > maxUserResultsShown &&
|
||||
|
||||
+30
-40
@@ -1,5 +1,6 @@
|
||||
import Avatar from '@atoms/avatar';
|
||||
import { Base, Info } from '@atoms/text';
|
||||
import UserBlock from '@molecules/grouped-rows/user';
|
||||
import { useDriveItem } from '@features/drive/hooks/use-drive-item';
|
||||
import { DriveFileAccessLevel } from '@features/drive/types';
|
||||
import { useCurrentUser } from '@features/users/hooks/use-current-user';
|
||||
@@ -19,7 +20,7 @@ export const InternalAccessManager = ({ id, disabled }: { id: string; disabled:
|
||||
return (
|
||||
<>
|
||||
<Base className="block mt-4 mb-1">{Languages.t('components.internal-access_specific_rules')}</Base>
|
||||
<div className="rounded-md border mt-2">
|
||||
<div className="rounded-md border mt-2 dark:border-zinc-700">
|
||||
<UserAccessSelector id={id} disabled={disabled} />
|
||||
|
||||
{userEntities
|
||||
@@ -84,48 +85,37 @@ const UserAccessLevel = ({
|
||||
const { item, loading, update } = useDriveItem(id);
|
||||
const user = useUser(userId);
|
||||
const { user: currentUser } = useCurrentUser();
|
||||
const level =
|
||||
item?.access_info.entities.filter(a => a.type === 'user' && a.id === userId)?.[0]?.level ||
|
||||
'none';
|
||||
|
||||
const level = item?.access_info.entities.filter(a => a.type === 'user' && a.id === userId)?.[0]?.level || 'none';
|
||||
return (
|
||||
<div className="p-4 border-t flex flex-row items-center justify-center">
|
||||
<div className="shrink-0">
|
||||
<Avatar
|
||||
avatar={user?.thumbnail || ''}
|
||||
title={!user ? '-' : currentUserService.getFullName(user)}
|
||||
size="sm"
|
||||
/>
|
||||
</div>
|
||||
<div className="grow ml-2">
|
||||
<Base>{!!user && currentUserService.getFullName(user)}</Base>{' '}
|
||||
{user?.id === currentUser?.id && <Info>{Languages.t('components.internal-access_specific_rules_you')}</Info>}
|
||||
</div>
|
||||
<div className="shrink-0 ml-2">
|
||||
<UserBlock
|
||||
className="p-4 border-t dark:border-zinc-700"
|
||||
user={user}
|
||||
isSelf={!!currentUser?.id && user?.id === currentUser?.id}
|
||||
suffix={
|
||||
<AccessLevel
|
||||
disabled={loading || disabled || user?.id === currentUser?.id}
|
||||
level={level}
|
||||
canRemove
|
||||
onChange={level => {
|
||||
update({
|
||||
access_info: {
|
||||
entities:
|
||||
level === 'remove'
|
||||
? item?.access_info?.entities.filter(
|
||||
e => e.type !== 'user' || e.id !== userId,
|
||||
) || []
|
||||
: item?.access_info?.entities.map(e => {
|
||||
if (e.type === 'user' && e.id === userId) {
|
||||
return { ...e, level };
|
||||
}
|
||||
return e;
|
||||
}) || [],
|
||||
public: item?.access_info.public,
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
canRemove={true}
|
||||
onChange={
|
||||
level =>
|
||||
update({
|
||||
access_info: {
|
||||
entities:
|
||||
level === 'remove'
|
||||
? item?.access_info?.entities.filter(
|
||||
e => e.type !== 'user' || e.id !== userId,
|
||||
) || []
|
||||
: item?.access_info?.entities.map(e => {
|
||||
if (e.type === 'user' && e.id === userId)
|
||||
return { ...e, level };
|
||||
return e;
|
||||
}) || [],
|
||||
public: item?.access_info.public,
|
||||
},
|
||||
})
|
||||
}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ export const PublicLinkManager = ({ id, disabled }: { id: string; disabled?: boo
|
||||
<Subtitle className="block mt-2 mb-1">
|
||||
{Languages.t('components.public-link-acess.public_link_access')}
|
||||
</Subtitle>
|
||||
<div className="rounded-md border">
|
||||
<div className="rounded-md border dark:border-zinc-700">
|
||||
<div className="p-4 flex flex-row items-center justify-center">
|
||||
<div className="grow relative">
|
||||
<Input
|
||||
|
||||
Reference in New Issue
Block a user