M: Disable move buttons when all selected

This commit is contained in:
Ivan 2024-11-19 21:56:26 +03:00
parent d637def7a1
commit 5d68f05b85
4 changed files with 15 additions and 10 deletions

View File

@ -112,13 +112,13 @@ function ToolbarConstituenta({
<MiniButton
titleHtml={prepareTooltip('Переместить вверх', 'Alt + вверх')}
icon={<IconMoveUp size='1.25rem' className='icon-primary' />}
disabled={disabled || modified}
disabled={disabled || modified || (controller.schema && controller.schema?.items.length < 2)}
onClick={controller.moveUp}
/>
<MiniButton
titleHtml={prepareTooltip('Переместить вниз', 'Alt + вниз')}
icon={<IconMoveDown size='1.25rem' className='icon-primary' />}
disabled={disabled || modified}
disabled={disabled || modified || (controller.schema && controller.schema?.items.length < 2)}
onClick={controller.moveDown}
/>
</>

View File

@ -46,13 +46,21 @@ function ToolbarRSList() {
<MiniButton
titleHtml={prepareTooltip('Переместить вверх', 'Alt + вверх')}
icon={<IconMoveUp size='1.25rem' className='icon-primary' />}
disabled={controller.isProcessing || controller.nothingSelected}
disabled={
controller.isProcessing ||
controller.selected.length === 0 ||
(controller.schema && controller.selected.length === controller.schema.items.length)
}
onClick={controller.moveUp}
/>
<MiniButton
titleHtml={prepareTooltip('Переместить вниз', 'Alt + вниз')}
icon={<IconMoveDown size='1.25rem' className='icon-primary' />}
disabled={controller.isProcessing || controller.nothingSelected}
disabled={
controller.isProcessing ||
controller.selected.length === 0 ||
(controller.schema && controller.selected.length === controller.schema.items.length)
}
onClick={controller.moveDown}
/>
<div ref={insertMenu.ref}>

View File

@ -137,7 +137,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
return;
}
const definition = controller.selected.map(id => controller.schema!.cstByID.get(id)!.alias).join(' ');
controller.createCst(controller.nothingSelected ? CstType.BASE : CstType.TERM, false, definition);
controller.createCst(controller.selected.length === 0 ? CstType.BASE : CstType.TERM, false, definition);
}
function handleDeleteCst() {

View File

@ -65,7 +65,6 @@ export interface IRSEditContext extends ILibraryItemEditor {
isProcessing: boolean;
isAttachedToOSS: boolean;
canProduceStructure: boolean;
nothingSelected: boolean;
canDeleteSelected: boolean;
updateSchema: (data: ILibraryUpdateData) => void;
@ -148,10 +147,9 @@ export const RSEditState = ({
[accessLevel, model.schema?.read_only]
);
const isContentEditable = useMemo(() => isMutable && !model.isArchive, [isMutable, model.isArchive]);
const nothingSelected = useMemo(() => selected.length === 0, [selected]);
const canDeleteSelected = useMemo(
() => !nothingSelected && selected.every(id => !model.schema?.cstByID.get(id)?.is_inherited),
[selected, nothingSelected, model.schema]
() => selected.length > 0 && selected.every(id => !model.schema?.cstByID.get(id)?.is_inherited),
[selected, model.schema]
);
const isAttachedToOSS = useMemo(
() =>
@ -625,7 +623,6 @@ export const RSEditState = ({
isProcessing: model.processing,
isAttachedToOSS,
canProduceStructure,
nothingSelected,
canDeleteSelected,
setOwner,