mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
Add indication for anonymous user and archive schema
This commit is contained in:
parent
7d4b87aa7d
commit
f2cba9aaaf
|
@ -13,7 +13,7 @@ import {
|
||||||
BiUpload
|
BiUpload
|
||||||
} from 'react-icons/bi';
|
} from 'react-icons/bi';
|
||||||
import { FiEdit } from 'react-icons/fi';
|
import { FiEdit } from 'react-icons/fi';
|
||||||
import { LuCrown, LuGlasses, LuReplace } from 'react-icons/lu';
|
import { LuAlertCircle, LuAlertTriangle, LuCrown, LuGlasses, LuReplace } from 'react-icons/lu';
|
||||||
import { VscLibrary } from 'react-icons/vsc';
|
import { VscLibrary } from 'react-icons/vsc';
|
||||||
|
|
||||||
import Button from '@/components/ui/Button';
|
import Button from '@/components/ui/Button';
|
||||||
|
@ -37,7 +37,7 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
const controller = useRSEdit();
|
const controller = useRSEdit();
|
||||||
const router = useConceptNavigation();
|
const router = useConceptNavigation();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isOwned, isClaimable } = useRSForm();
|
const model = useRSForm();
|
||||||
|
|
||||||
const { mode, setMode } = useAccessMode();
|
const { mode, setMode } = useAccessMode();
|
||||||
|
|
||||||
|
@ -99,26 +99,34 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
router.push('/library/create');
|
router.push('/library/create');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleLogin() {
|
||||||
|
router.push('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleGotoCurrent() {
|
||||||
|
router.push(`/rsforms/${model.schemaID}`);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex'>
|
<div className='flex'>
|
||||||
<div ref={schemaMenu.ref}>
|
<div ref={schemaMenu.ref}>
|
||||||
<Button
|
<Button
|
||||||
noBorder
|
|
||||||
dense
|
dense
|
||||||
|
noBorder
|
||||||
|
noOutline
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
title='Меню'
|
title='Меню'
|
||||||
hideTitle={schemaMenu.isOpen}
|
hideTitle={schemaMenu.isOpen}
|
||||||
icon={<BiMenu size='1.25rem' className='clr-text-controls' />}
|
icon={<BiMenu size='1.25rem' className='clr-text-controls' />}
|
||||||
className='h-full pl-2'
|
className='h-full pl-2'
|
||||||
style={{ outlineColor: 'transparent' }}
|
|
||||||
onClick={schemaMenu.toggle}
|
onClick={schemaMenu.toggle}
|
||||||
/>
|
/>
|
||||||
<Dropdown isOpen={schemaMenu.isOpen}>
|
<Dropdown isOpen={schemaMenu.isOpen}>
|
||||||
<DropdownButton
|
<DropdownButton
|
||||||
disabled={(!user || !isClaimable) && !isOwned}
|
disabled={(!user || !model.isClaimable) && !model.isOwned}
|
||||||
text={isOwned ? 'Вы — владелец' : 'Стать владельцем'}
|
text={model.isOwned ? 'Вы — владелец' : 'Стать владельцем'}
|
||||||
icon={<LuCrown size='1rem' className={isOwned ? 'clr-text-success' : ''} />}
|
icon={<LuCrown size='1rem' className={model.isOwned ? 'clr-text-success' : ''} />}
|
||||||
onClick={!isOwned && user && isClaimable ? handleClaimOwner : undefined}
|
onClick={!model.isOwned && user && model.isClaimable ? handleClaimOwner : undefined}
|
||||||
/>
|
/>
|
||||||
<DropdownButton
|
<DropdownButton
|
||||||
text='Поделиться'
|
text='Поделиться'
|
||||||
|
@ -163,16 +171,22 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{!model.isArchive ? (
|
||||||
<div ref={editMenu.ref}>
|
<div ref={editMenu.ref}>
|
||||||
<Button
|
<Button
|
||||||
dense
|
dense
|
||||||
noBorder
|
noBorder
|
||||||
|
noOutline
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
title={'Редактирование'}
|
title={'Редактирование'}
|
||||||
hideTitle={editMenu.isOpen}
|
hideTitle={editMenu.isOpen}
|
||||||
className='h-full'
|
className='h-full'
|
||||||
style={{ outlineColor: 'transparent' }}
|
icon={
|
||||||
icon={<FiEdit size='1.25rem' className={controller.isMutable ? 'clr-text-success' : 'clr-text-warning'} />}
|
<FiEdit
|
||||||
|
size='1.25rem'
|
||||||
|
className={!user ? 'clr-text-controls' : controller.isMutable ? 'clr-text-success' : 'clr-text-warning'}
|
||||||
|
/>
|
||||||
|
}
|
||||||
onClick={editMenu.toggle}
|
onClick={editMenu.toggle}
|
||||||
/>
|
/>
|
||||||
<Dropdown isOpen={editMenu.isOpen}>
|
<Dropdown isOpen={editMenu.isOpen}>
|
||||||
|
@ -199,16 +213,31 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
/>
|
/>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</div>
|
</div>
|
||||||
|
) : null}
|
||||||
|
{model.isArchive ? (
|
||||||
|
<Button
|
||||||
|
dense
|
||||||
|
noBorder
|
||||||
|
noOutline
|
||||||
|
tabIndex={-1}
|
||||||
|
title={'Редактирование запрещено - Архив'}
|
||||||
|
hideTitle={accessMenu.isOpen}
|
||||||
|
className='h-full'
|
||||||
|
icon={<LuAlertCircle size='1.25rem' className='clr-text-primary' />}
|
||||||
|
onClick={handleGotoCurrent}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{user ? (
|
||||||
<div ref={accessMenu.ref}>
|
<div ref={accessMenu.ref}>
|
||||||
<Button
|
<Button
|
||||||
dense
|
dense
|
||||||
noBorder
|
noBorder
|
||||||
|
noOutline
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
title={`Режим ${labelAccessMode(mode)}`}
|
title={`Режим ${labelAccessMode(mode)}`}
|
||||||
hideTitle={accessMenu.isOpen}
|
hideTitle={accessMenu.isOpen}
|
||||||
className='h-full pr-2'
|
className='h-full pr-2'
|
||||||
style={{ outlineColor: 'transparent' }}
|
|
||||||
icon={
|
icon={
|
||||||
mode === UserAccessMode.ADMIN ? (
|
mode === UserAccessMode.ADMIN ? (
|
||||||
<BiMeteor size='1.25rem' className='clr-text-primary' />
|
<BiMeteor size='1.25rem' className='clr-text-primary' />
|
||||||
|
@ -228,10 +257,10 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
onClick={() => handleChangeMode(UserAccessMode.READER)}
|
onClick={() => handleChangeMode(UserAccessMode.READER)}
|
||||||
/>
|
/>
|
||||||
<DropdownButton
|
<DropdownButton
|
||||||
disabled={!isOwned}
|
disabled={!model.isOwned}
|
||||||
text={labelAccessMode(UserAccessMode.OWNER)}
|
text={labelAccessMode(UserAccessMode.OWNER)}
|
||||||
title={describeAccessMode(UserAccessMode.OWNER)}
|
title={describeAccessMode(UserAccessMode.OWNER)}
|
||||||
icon={<LuCrown size='1rem' className={isOwned ? 'clr-text-primary' : ''} />}
|
icon={<LuCrown size='1rem' className={model.isOwned ? 'clr-text-primary' : ''} />}
|
||||||
onClick={() => handleChangeMode(UserAccessMode.OWNER)}
|
onClick={() => handleChangeMode(UserAccessMode.OWNER)}
|
||||||
/>
|
/>
|
||||||
<DropdownButton
|
<DropdownButton
|
||||||
|
@ -243,6 +272,20 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||||
/>
|
/>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</div>
|
</div>
|
||||||
|
) : null}
|
||||||
|
{!user ? (
|
||||||
|
<Button
|
||||||
|
dense
|
||||||
|
noBorder
|
||||||
|
noOutline
|
||||||
|
tabIndex={-1}
|
||||||
|
title={'Анонимный режим. Чтобы использовать все функции войдите в Портал'}
|
||||||
|
hideTitle={accessMenu.isOpen}
|
||||||
|
className='h-full pr-2'
|
||||||
|
icon={<LuAlertTriangle size='1.25rem' className='clr-text-warning' />}
|
||||||
|
onClick={handleLogin}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user