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

View File

@ -46,13 +46,21 @@ function ToolbarRSList() {
<MiniButton <MiniButton
titleHtml={prepareTooltip('Переместить вверх', 'Alt + вверх')} titleHtml={prepareTooltip('Переместить вверх', 'Alt + вверх')}
icon={<IconMoveUp size='1.25rem' className='icon-primary' />} 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} onClick={controller.moveUp}
/> />
<MiniButton <MiniButton
titleHtml={prepareTooltip('Переместить вниз', 'Alt + вниз')} titleHtml={prepareTooltip('Переместить вниз', 'Alt + вниз')}
icon={<IconMoveDown size='1.25rem' className='icon-primary' />} 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} onClick={controller.moveDown}
/> />
<div ref={insertMenu.ref}> <div ref={insertMenu.ref}>

View File

@ -137,7 +137,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
return; return;
} }
const definition = controller.selected.map(id => controller.schema!.cstByID.get(id)!.alias).join(' '); 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() { function handleDeleteCst() {

View File

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