R: Refactor tabs layout

This commit is contained in:
Ivan 2025-03-11 11:35:51 +03:00
parent 31a29b7bc0
commit 04c87f51cf
9 changed files with 16 additions and 60 deletions

View File

@ -39,10 +39,10 @@ export function SearchBar({
...restProps ...restProps
}: SearchBarProps) { }: SearchBarProps) {
return ( return (
<div className={clsx('relative', className)} {...restProps}> <div className={clsx('relative flex items-center', className)} {...restProps}>
{!noIcon ? ( {!noIcon ? (
<IconSearch <IconSearch
className='absolute -top-0.5 left-3 translate-y-1/2 pointer-events-none clr-text-controls' className='absolute -top-0.5 left-2 translate-y-1/2 pointer-events-none clr-text-controls'
size='1.25rem' size='1.25rem'
/> />
) : null} ) : null}
@ -52,7 +52,7 @@ export function SearchBar({
transparent transparent
placeholder={placeholder} placeholder={placeholder}
type='search' type='search'
className={clsx('bg-transparent', !noIcon && 'pl-10')} className={clsx('bg-transparent', !noIcon && 'pl-8')}
noBorder={noBorder} noBorder={noBorder}
value={query} value={query}
onChange={event => onChangeQuery?.(event.target.value)} onChange={event => onChangeQuery?.(event.target.value)}

View File

@ -3,7 +3,6 @@
import { useState } from 'react'; import { useState } from 'react';
import { FormProvider, useForm, useWatch } from 'react-hook-form'; import { FormProvider, useForm, useWatch } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
import { HelpTopic } from '@/features/help'; import { HelpTopic } from '@/features/help';
@ -102,13 +101,8 @@ export function DlgCreateOperation() {
className='w-160 px-6 h-128' className='w-160 px-6 h-128'
helpTopic={HelpTopic.CC_OSS} helpTopic={HelpTopic.CC_OSS}
> >
<Tabs <Tabs selectedTabClassName='clr-selected' className='grid' selectedIndex={activeTab} onSelect={handleSelectTab}>
selectedTabClassName='clr-selected' <TabList className='z-pop mx-auto -mb-5 flex border divide-x rounded-none bg-prim-200'>
className='flex flex-col pt-2'
selectedIndex={activeTab}
onSelect={handleSelectTab}
>
<TabList className={clsx('self-center absolute top-10', 'flex', 'border divide-x rounded-none', 'bg-prim-200')}>
<TabLabel <TabLabel
title={describeOperationType(OperationType.INPUT)} title={describeOperationType(OperationType.INPUT)}
label={labelOperationType(OperationType.INPUT)} label={labelOperationType(OperationType.INPUT)}

View File

@ -3,7 +3,6 @@
import { Suspense, useState } from 'react'; import { Suspense, useState } from 'react';
import { FormProvider, useForm } from 'react-hook-form'; import { FormProvider, useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
import { HelpTopic } from '@/features/help'; import { HelpTopic } from '@/features/help';
@ -75,13 +74,8 @@ export function DlgEditOperation() {
helpTopic={HelpTopic.UI_SUBSTITUTIONS} helpTopic={HelpTopic.UI_SUBSTITUTIONS}
hideHelpWhen={() => activeTab !== TabID.SUBSTITUTION} hideHelpWhen={() => activeTab !== TabID.SUBSTITUTION}
> >
<Tabs <Tabs selectedTabClassName='clr-selected' className='grid' selectedIndex={activeTab} onSelect={setActiveTab}>
selectedTabClassName='clr-selected' <TabList className='mb-3 mx-auto w-fit flex border divide-x rounded-none bg-prim-200'>
className='flex flex-col'
selectedIndex={activeTab}
onSelect={setActiveTab}
>
<TabList className={clsx('mb-3 self-center', 'flex', 'border divide-x rounded-none', 'bg-prim-200')}>
<TabLabel title='Текстовые поля' label='Карточка' className='w-32' /> <TabLabel title='Текстовые поля' label='Карточка' className='w-32' />
{target.operation_type === OperationType.SYNTHESIS ? ( {target.operation_type === OperationType.SYNTHESIS ? (
<TabLabel title='Выбор аргументов операции' label='Аргументы' className='w-32' /> <TabLabel title='Выбор аргументов операции' label='Аргументы' className='w-32' />

View File

@ -1,7 +1,6 @@
'use client'; 'use client';
import { useLayoutEffect } from 'react'; import { useLayoutEffect } from 'react';
import clsx from 'clsx';
import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { useConceptNavigation } from '@/app/Navigation/NavigationContext';
@ -62,15 +61,7 @@ export function OssTabs({ activeTab }: OssTabsProps) {
selectedTabClassName='clr-selected' selectedTabClassName='clr-selected'
className='relative flex flex-col mx-auto min-w-fit items-center' className='relative flex flex-col mx-auto min-w-fit items-center'
> >
<TabList <TabList className='absolute z-sticky flex border-b-2 border-x-2 divide-x-2 bg-prim-200'>
className={clsx(
'absolute z-sticky',
'top-0 right-1/2 w-fit translate-x-1/2',
'flex items-stretch',
'border-b-2 border-x-2 divide-x-2',
'bg-prim-200'
)}
>
<MenuOssTabs /> <MenuOssTabs />
<TabLabel label='Карточка' title={schema.title ?? ''} /> <TabLabel label='Карточка' title={schema.title ?? ''} />

View File

@ -69,13 +69,8 @@ export function DlgCstTemplate() {
onSubmit={event => void methods.handleSubmit(onSubmit)(event)} onSubmit={event => void methods.handleSubmit(onSubmit)(event)}
helpTopic={HelpTopic.RSL_TEMPLATES} helpTopic={HelpTopic.RSL_TEMPLATES}
> >
<Tabs <Tabs selectedTabClassName='clr-selected' className='grid' selectedIndex={activeTab} onSelect={setActiveTab}>
selectedTabClassName='clr-selected' <TabList className='mb-3 mx-auto flex border divide-x rounded-none bg-prim-200'>
className='flex flex-col'
selectedIndex={activeTab}
onSelect={setActiveTab}
>
<TabList className='mb-4 self-center flex border divide-x rounded-none bg-prim-200'>
<TabLabel label='Шаблон' title='Выбор шаблона выражения' className='w-32' /> <TabLabel label='Шаблон' title='Выбор шаблона выражения' className='w-32' />
<TabLabel label='Аргументы' title='Подстановка аргументов шаблона' className='w-32' /> <TabLabel label='Аргументы' title='Подстановка аргументов шаблона' className='w-32' />
<TabLabel label='Конституента' title='Редактирование конституенты' className='w-32' /> <TabLabel label='Конституента' title='Редактирование конституенты' className='w-32' />

View File

@ -104,13 +104,8 @@ export function DlgEditReference() {
className='w-160 px-6 h-128' className='w-160 px-6 h-128'
helpTopic={HelpTopic.TERM_CONTROL} helpTopic={HelpTopic.TERM_CONTROL}
> >
<Tabs <Tabs selectedTabClassName='clr-selected' className='grid' selectedIndex={activeTab} onSelect={handleChangeTab}>
selectedTabClassName='clr-selected' <TabList className='mb-3 mx-auto flex border divide-x rounded-none bg-prim-200'>
className='flex flex-col'
selectedIndex={activeTab}
onSelect={handleChangeTab}
>
<TabList className='mb-3 self-center flex border divide-x rounded-none bg-prim-200'>
<TabLabel title='Отсылка на термин в заданной словоформе' label={labelReferenceType(ReferenceType.ENTITY)} /> <TabLabel title='Отсылка на термин в заданной словоформе' label={labelReferenceType(ReferenceType.ENTITY)} />
<TabLabel <TabLabel
title='Установление синтаксической связи с отсылкой на термин' title='Установление синтаксической связи с отсылкой на термин'

View File

@ -57,13 +57,8 @@ export function DlgInlineSynthesis() {
canSubmit={methods.formState.isValid && sourceID !== null} canSubmit={methods.formState.isValid && sourceID !== null}
onSubmit={event => void methods.handleSubmit(onSubmit)(event)} onSubmit={event => void methods.handleSubmit(onSubmit)(event)}
> >
<Tabs <Tabs selectedTabClassName='clr-selected' className='grid' selectedIndex={activeTab} onSelect={setActiveTab}>
selectedTabClassName='clr-selected' <TabList className='mb-3 mx-auto flex border divide-x rounded-none bg-prim-200'>
className='flex flex-col'
selectedIndex={activeTab}
onSelect={setActiveTab}
>
<TabList className='mb-3 self-center flex border divide-x rounded-none bg-prim-200'>
<TabLabel <TabLabel
label='Схема' // label='Схема' //
title='Источник конституент' title='Источник конституент'

View File

@ -34,6 +34,7 @@ export function TabConstituents() {
rows={13} rows={13}
value={field.value} value={field.value}
onChange={handleSelectItems} onChange={handleSelectItems}
className='w-144'
/> />
)} )}
/> />

View File

@ -1,7 +1,6 @@
'use client'; 'use client';
import { useLayoutEffect } from 'react'; import { useLayoutEffect } from 'react';
import clsx from 'clsx';
import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { useConceptNavigation } from '@/app/Navigation/NavigationContext';
@ -78,15 +77,7 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) {
selectedTabClassName='clr-selected' selectedTabClassName='clr-selected'
className='relative flex flex-col min-w-fit items-center' className='relative flex flex-col min-w-fit items-center'
> >
<TabList <TabList className='absolute z-sticky flex border-b-2 border-x-2 divide-x-2 bg-prim-200'>
className={clsx(
'absolute z-sticky',
'mx-auto w-fit top-0 right-1/2 translate-x-1/2',
'flex items-stretch',
'border-b-2 border-x-2 divide-x-2',
'bg-prim-200'
)}
>
<MenuRSTabs /> <MenuRSTabs />
<TabLabel <TabLabel