M: Small UI fixes

This commit is contained in:
Ivan 2024-08-30 20:18:04 +03:00
parent b3c8b217c0
commit 4ed6975d84
7 changed files with 26 additions and 6 deletions

View File

@ -12,7 +12,7 @@ interface InfoConstituentaProps extends CProps.Div {
function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaProps) { function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaProps) {
return ( return (
<div className={clsx('dense min-w-[15rem]', className)} {...restProps}> <div className={clsx('dense min-w-[15rem] break-words', className)} {...restProps}>
<h2> <h2>
{data.alias} {data.alias}
{data.is_inherited ? ' (наследуется)' : ''} {data.is_inherited ? ' (наследуется)' : ''}
@ -28,7 +28,7 @@ function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaPro
<span className='font-math'>{labelCstTypification(data)}</span> <span className='font-math'>{labelCstTypification(data)}</span>
</p> </p>
{data.definition_formal ? ( {data.definition_formal ? (
<p> <p className='break-all'>
<b>Выражение: </b> <b>Выражение: </b>
<span className='font-math'>{data.definition_formal}</span> <span className='font-math'>{data.definition_formal}</span>
</p> </p>

View File

@ -90,6 +90,7 @@ function PickConstituenta({
<div className='border divide-y'> <div className='border divide-y'>
<SearchBar <SearchBar
id={id ? `${id}__search` : undefined} id={id ? `${id}__search` : undefined}
className='clr-input'
noBorder noBorder
value={filterText} value={filterText}
onChange={newValue => setFilterText(newValue)} onChange={newValue => setFilterText(newValue)}

View File

@ -24,6 +24,7 @@ export interface ModalProps extends CProps.Styling {
overflowVisible?: boolean; overflowVisible?: boolean;
hideWindow: () => void; hideWindow: () => void;
beforeSubmit?: () => boolean;
onSubmit?: () => void; onSubmit?: () => void;
onCancel?: () => void; onCancel?: () => void;
@ -33,6 +34,7 @@ export interface ModalProps extends CProps.Styling {
function Modal({ function Modal({
header, header,
hideWindow, hideWindow,
beforeSubmit,
onSubmit, onSubmit,
readonly, readonly,
onCancel, onCancel,
@ -53,8 +55,11 @@ function Modal({
}; };
const handleSubmit = () => { const handleSubmit = () => {
hideWindow(); if (beforeSubmit && !beforeSubmit()) {
return;
}
if (onSubmit) onSubmit(); if (onSubmit) onSubmit();
hideWindow();
}; };
return ( return (

View File

@ -16,6 +16,7 @@ import { CstType, ICstCreateData, IRSForm } from '@/models/rsform';
import { generateAlias, validateNewAlias } from '@/models/rsformAPI'; import { generateAlias, validateNewAlias } from '@/models/rsformAPI';
import { inferTemplatedType, substituteTemplateArgs } from '@/models/rslangAPI'; import { inferTemplatedType, substituteTemplateArgs } from '@/models/rslangAPI';
import { PARAMETER } from '@/utils/constants'; import { PARAMETER } from '@/utils/constants';
import { prompts } from '@/utils/labels';
import FormCreateCst from '../DlgCreateCst/FormCreateCst'; import FormCreateCst from '../DlgCreateCst/FormCreateCst';
import TabArguments, { IArgumentsState } from './TabArguments'; import TabArguments, { IArgumentsState } from './TabArguments';
@ -55,7 +56,18 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }:
}); });
const [validated, setValidated] = useState(false); const [validated, setValidated] = useState(false);
const handleSubmit = () => onCreate(constituenta);
function handleSubmit() {
onCreate(constituenta);
}
function handlePrompt(): boolean {
const definedSomeArgs = substitutes.arguments.some(arg => !!arg.value);
if (!definedSomeArgs && !window.confirm(prompts.templateUndefined)) {
return false;
}
return true;
}
useLayoutEffect(() => { useLayoutEffect(() => {
if (!template.templateID) { if (!template.templateID) {
@ -151,6 +163,7 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }:
className='w-[43rem] h-[36.5rem] px-6' className='w-[43rem] h-[36.5rem] px-6'
hideWindow={hideWindow} hideWindow={hideWindow}
canSubmit={validated} canSubmit={validated}
beforeSubmit={handlePrompt}
onSubmit={handleSubmit} onSubmit={handleSubmit}
> >
<Overlay position='top-0 right-[6rem]'> <Overlay position='top-0 right-[6rem]'>

View File

@ -158,7 +158,7 @@ function EditorRSList({ onOpenEdit }: EditorRSListProps) {
</div> </div>
) : null} ) : null}
<Overlay position='top-[0.25rem] right-[1rem]' layer='z-navigation'> <Overlay position='top-[0.25rem] right-[1rem]' layer='z-tooltip'>
<MiniButton <MiniButton
title='Выгрузить в формате CSV' title='Выгрузить в формате CSV'
icon={<IconCSV size='1.25rem' className='icon-green' />} icon={<IconCSV size='1.25rem' className='icon-green' />}

View File

@ -254,7 +254,7 @@ function MenuRSTabs({ onDestroy }: MenuRSTabsProps) {
text='Порождение структуры' text='Порождение структуры'
titleHtml='Раскрыть структуру типизации <br/>выделенной конституенты' titleHtml='Раскрыть структуру типизации <br/>выделенной конституенты'
icon={<IconGenerateStructure size='1rem' className='icon-primary' />} icon={<IconGenerateStructure size='1rem' className='icon-primary' />}
disabled={!controller.isContentEditable || !controller.canProduceStructure} disabled={!controller.isContentEditable || !controller.canProduceStructure || controller.isProcessing}
onClick={handleProduceStructure} onClick={handleProduceStructure}
/> />
<DropdownButton <DropdownButton

View File

@ -1013,6 +1013,7 @@ export const prompts = {
'Внимание!!\nУдаление операционной схемы приведет к удалению всех операций и собственных концептуальных схем.\nДанное действие нельзя отменить.\nВы уверены, что хотите удалить данную ОСС?', 'Внимание!!\nУдаление операционной схемы приведет к удалению всех операций и собственных концептуальных схем.\nДанное действие нельзя отменить.\nВы уверены, что хотите удалить данную ОСС?',
generateWordforms: 'Данное действие приведет к перезаписи словоформ при совпадении граммем. Продолжить?', generateWordforms: 'Данное действие приведет к перезаписи словоформ при совпадении граммем. Продолжить?',
restoreArchive: 'При восстановлении архивной версии актуальная схему будет заменена. Продолжить?', restoreArchive: 'При восстановлении архивной версии актуальная схему будет заменена. Продолжить?',
templateUndefined: 'Вы уверены, что хотите создать шаблонную конституенту не фиксируя аргументы?',
ownerChange: ownerChange:
'Вы уверены, что хотите изменить владельца? Вы потеряете право управления данной схемой. Данное действие отменить нельзя' 'Вы уверены, что хотите изменить владельца? Вы потеряете право управления данной схемой. Данное действие отменить нельзя'
}; };