Refactoring: UI elements naming convention
Some checks are pending
Frontend CI / build (18.x) (push) Waiting to run
Some checks are pending
Frontend CI / build (18.x) (push) Waiting to run
This commit is contained in:
parent
74f1c4ef0e
commit
6c3461977d
|
@ -3,8 +3,8 @@ import { Outlet } from 'react-router-dom';
|
|||
import ConceptToaster from '@/app/ConceptToaster';
|
||||
import Footer from '@/app/Footer';
|
||||
import Navigation from '@/app/Navigation';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { NavigationState } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { globals } from '@/utils/constants';
|
||||
|
||||
function ApplicationLayout() {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { ToastContainer, type ToastContainerProps } from 'react-toastify';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
|
||||
interface ToasterThemedProps extends Omit<ToastContainerProps, 'theme'> {}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { external_urls } from '@/utils/constants';
|
||||
|
||||
import TextURL from '../components/ui/TextURL';
|
||||
|
|
|
@ -5,8 +5,8 @@ import { IntlProvider } from 'react-intl';
|
|||
import { pdfjs } from 'react-pdf';
|
||||
|
||||
import { AuthState } from '@/context/AuthContext';
|
||||
import { OptionsState } from '@/context/ConceptOptionsContext';
|
||||
import { LibraryState } from '@/context/LibraryContext';
|
||||
import { OptionsState } from '@/context/OptionsContext';
|
||||
import { UsersState } from '@/context/UsersContext';
|
||||
|
||||
import ErrorFallback from './ErrorFallback';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
|
||||
function Logo() {
|
||||
|
|
|
@ -3,14 +3,14 @@ import { motion } from 'framer-motion';
|
|||
|
||||
import { IconLibrary2, IconManuals, IconNewItem2 } from '@/components/Icons';
|
||||
import { CProps } from '@/components/props';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { animateNavigation } from '@/styling/animations';
|
||||
|
||||
import { urls } from '../urls';
|
||||
import Logo from './Logo';
|
||||
import NavigationButton from './NavigationButton';
|
||||
import ToggleNavigationButton from './ToggleNavigationButton';
|
||||
import ToggleNavigation from './ToggleNavigation';
|
||||
import UserMenu from './UserMenu';
|
||||
|
||||
function Navigation() {
|
||||
|
@ -33,7 +33,7 @@ function Navigation() {
|
|||
'select-none'
|
||||
)}
|
||||
>
|
||||
<ToggleNavigationButton />
|
||||
<ToggleNavigation />
|
||||
<motion.div
|
||||
className={clsx(
|
||||
'pl-2 pr-[0.9rem] h-[3rem] w-full', // prettier: split lines
|
||||
|
|
|
@ -2,11 +2,11 @@ import clsx from 'clsx';
|
|||
import { motion } from 'framer-motion';
|
||||
|
||||
import { IconPin, IconUnpin } from '@/components/Icons';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { animateNavigationToggle } from '@/styling/animations';
|
||||
import { globals } from '@/utils/constants';
|
||||
|
||||
function ToggleNavigationButton() {
|
||||
function ToggleNavigation() {
|
||||
const { noNavigationAnimation, toggleNoNavigation } = useConceptOptions();
|
||||
return (
|
||||
<motion.button
|
||||
|
@ -31,4 +31,4 @@ function ToggleNavigationButton() {
|
|||
);
|
||||
}
|
||||
|
||||
export default ToggleNavigationButton;
|
||||
export default ToggleNavigation;
|
|
@ -13,8 +13,8 @@ import { CProps } from '@/components/props';
|
|||
import Dropdown from '@/components/ui/Dropdown';
|
||||
import DropdownButton from '@/components/ui/DropdownButton';
|
||||
import { useAuth } from '@/context/AuthContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
|
||||
import { urls } from '../urls';
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@ import { IconLogin, IconUser2 } from '@/components/Icons';
|
|||
import Loader from '@/components/ui/Loader';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useAuth } from '@/context/AuthContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import useDropdown from '@/hooks/useDropdown';
|
||||
|
||||
import { urls } from '../urls';
|
||||
|
|
|
@ -6,7 +6,7 @@ import axios, { AxiosError, AxiosRequestConfig } from 'axios';
|
|||
import { toast } from 'react-toastify';
|
||||
|
||||
import { type ErrorData } from '@/components/info/InfoError';
|
||||
import { ILexemeData, IResolutionData, ITextRequest, ITextResult, IWordFormPlain } from '@/models/language';
|
||||
import { ILexemeData, ITextRequest, ITextResult, IWordFormPlain } from '@/models/language';
|
||||
import {
|
||||
AccessPolicy,
|
||||
ILibraryItem,
|
||||
|
@ -444,13 +444,6 @@ export function patchInlineSynthesis(request: FrontExchange<IInlineSynthesisData
|
|||
});
|
||||
}
|
||||
|
||||
export function postResolveText(schema: string, request: FrontExchange<ITextRequest, IResolutionData>) {
|
||||
AxiosPost({
|
||||
endpoint: `/api/rsforms/${schema}/resolve`,
|
||||
request: request
|
||||
});
|
||||
}
|
||||
|
||||
export function postInflectText(request: FrontExchange<IWordFormPlain, ITextResult>) {
|
||||
AxiosPost({
|
||||
endpoint: `/api/cctext/inflect`,
|
||||
|
|
|
@ -9,7 +9,7 @@ import { EditorView } from 'codemirror';
|
|||
import { forwardRef, useCallback, useMemo, useRef } from 'react';
|
||||
|
||||
import Label from '@/components/ui/Label';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { getFontClassName } from '@/models/miscellaneousAPI';
|
||||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||
import { generateAlias, getCstTypePrefix, guessCstType } from '@/models/rsformAPI';
|
||||
|
|
|
@ -10,7 +10,7 @@ import { AnimatePresence } from 'framer-motion';
|
|||
import { forwardRef, useCallback, useMemo, useRef, useState } from 'react';
|
||||
|
||||
import Label from '@/components/ui/Label';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import DlgEditReference from '@/dialogs/DlgEditReference';
|
||||
import { ReferenceType } from '@/models/language';
|
||||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import ConstituentaTooltip from '@/components/info/ConstituentaTooltip';
|
||||
import { IConstituenta } from '@/models/rsform';
|
||||
import { isMockCst } from '@/models/rsformAPI';
|
||||
import { colorFgCstStatus, IColorTheme } from '@/styling/color';
|
||||
|
||||
import TooltipConstituenta from './TooltipConstituenta';
|
||||
|
||||
interface BadgeConstituentaProps {
|
||||
prefixID?: string;
|
||||
value: IConstituenta;
|
||||
|
@ -28,7 +29,7 @@ function BadgeConstituenta({ value, prefixID, theme }: BadgeConstituentaProps) {
|
|||
}}
|
||||
>
|
||||
{value.alias}
|
||||
<ConstituentaTooltip anchor={`#${prefixID}${value.alias}`} data={value} />
|
||||
<TooltipConstituenta anchor={`#${prefixID}${value.alias}`} data={value} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { GramData } from '@/models/language';
|
||||
import { colorFgGrammeme } from '@/styling/color';
|
||||
import { labelGrammeme } from '@/utils/labels';
|
||||
|
|
|
@ -2,7 +2,7 @@ import clsx from 'clsx';
|
|||
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import Tooltip, { PlacesType } from '@/components/ui/Tooltip';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import TopicPage from '../../pages/ManualsPage/TopicPage';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { CstClass } from '@/models/rsform';
|
||||
import { colorBgCstClass } from '@/styling/color';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ExpressionStatus } from '@/models/rsform';
|
||||
import { colorBgCstStatus } from '@/styling/color';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
|
|
@ -2,12 +2,12 @@ import InfoConstituenta from '@/components/info/InfoConstituenta';
|
|||
import Tooltip from '@/components/ui/Tooltip';
|
||||
import { IConstituenta } from '@/models/rsform';
|
||||
|
||||
interface ConstituentaTooltipProps {
|
||||
interface TooltipConstituentaProps {
|
||||
data: IConstituenta;
|
||||
anchor: string;
|
||||
}
|
||||
|
||||
function ConstituentaTooltip({ data, anchor }: ConstituentaTooltipProps) {
|
||||
function TooltipConstituenta({ data, anchor }: TooltipConstituentaProps) {
|
||||
return (
|
||||
<Tooltip clickable layer='z-modalTooltip' anchorSelect={anchor} className='max-w-[30rem]'>
|
||||
<InfoConstituenta data={data} onClick={event => event.stopPropagation()} />
|
||||
|
@ -15,4 +15,4 @@ function ConstituentaTooltip({ data, anchor }: ConstituentaTooltipProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ConstituentaTooltip;
|
||||
export default TooltipConstituenta;
|
|
@ -4,7 +4,7 @@ import { useEffect, useMemo, useState } from 'react';
|
|||
|
||||
import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable';
|
||||
import SearchBar from '@/components/ui/SearchBar';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { CstMatchMode } from '@/models/miscellaneous';
|
||||
import { IConstituenta } from '@/models/rsform';
|
||||
import { matchConstituenta } from '@/models/rsformAPI';
|
||||
|
|
|
@ -4,14 +4,14 @@ import clsx from 'clsx';
|
|||
import { useLayoutEffect, useMemo, useState } from 'react';
|
||||
|
||||
import DataTable, { createColumnHelper, RowSelectionState } from '@/components/ui/DataTable';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ConstituentaID, IConstituenta, IRSForm } from '@/models/rsform';
|
||||
import { isBasicConcept } from '@/models/rsformAPI';
|
||||
import { describeConstituenta } from '@/utils/labels';
|
||||
|
||||
import BadgeConstituenta from '../info/BadgeConstituenta';
|
||||
import NoData from '../ui/NoData';
|
||||
import GraphSelectionToolbar from './GraphSelectionToolbar';
|
||||
import ToolbarGraphSelection from './ToolbarGraphSelection';
|
||||
|
||||
interface PickMultiConstituentaProps {
|
||||
id?: string;
|
||||
|
@ -80,7 +80,7 @@ function PickMultiConstituenta({ id, schema, prefixID, rows, selected, setSelect
|
|||
Выбраны {selected.length} из {schema?.items.length ?? 0}
|
||||
</span>
|
||||
{schema ? (
|
||||
<GraphSelectionToolbar
|
||||
<ToolbarGraphSelection
|
||||
graph={schema.graph}
|
||||
core={schema.items.filter(cst => isBasicConcept(cst.cst_type)).map(cst => cst.id)}
|
||||
setSelected={setSelected}
|
||||
|
|
|
@ -4,7 +4,7 @@ import { useIntl } from 'react-intl';
|
|||
import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable';
|
||||
import SearchBar from '@/components/ui/SearchBar';
|
||||
import { useLibrary } from '@/context/LibraryContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/models/library';
|
||||
import { ILibraryFilter } from '@/models/miscellaneous';
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import SelectConstituenta from '@/components/select/SelectConstituenta';
|
|||
import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
||||
import Label from '@/components/ui/Label';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { IConstituenta, IRSForm, ISubstitution } from '@/models/rsform';
|
||||
import { describeConstituenta } from '@/utils/labels';
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import { Grammeme } from '@/models/language';
|
|||
import { prefixes } from '@/utils/constants';
|
||||
import { DefaultWordForms, IGrammemeOption, SelectorGrammemes } from '@/utils/selectors';
|
||||
|
||||
import WordformButton from './WordformButton';
|
||||
import WordformButton from '../../dialogs/DlgEditReference/WordformButton';
|
||||
|
||||
interface SelectWordFormProps {
|
||||
selected: IGrammemeOption[];
|
|
@ -14,21 +14,21 @@ import {
|
|||
import { CProps } from '../props';
|
||||
import MiniButton from '../ui/MiniButton';
|
||||
|
||||
interface GraphSelectionToolbarProps extends CProps.Styling {
|
||||
interface ToolbarGraphSelectionProps extends CProps.Styling {
|
||||
graph: Graph;
|
||||
core: number[];
|
||||
setSelected: React.Dispatch<React.SetStateAction<number[]>>;
|
||||
emptySelection?: boolean;
|
||||
}
|
||||
|
||||
function GraphSelectionToolbar({
|
||||
function ToolbarGraphSelection({
|
||||
className,
|
||||
graph,
|
||||
core,
|
||||
setSelected,
|
||||
emptySelection,
|
||||
...restProps
|
||||
}: GraphSelectionToolbarProps) {
|
||||
}: ToolbarGraphSelectionProps) {
|
||||
return (
|
||||
<div className={clsx('cc-icons', className)} {...restProps}>
|
||||
<MiniButton
|
||||
|
@ -76,4 +76,4 @@ function GraphSelectionToolbar({
|
|||
);
|
||||
}
|
||||
|
||||
export default GraphSelectionToolbar;
|
||||
export default ToolbarGraphSelection;
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import { ThreeCircles, ThreeDots } from 'react-loader-spinner';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
|
||||
import AnimateFade from '../wrap/AnimateFade';
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import Select, {
|
|||
StylesConfig
|
||||
} from 'react-select';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { selectDarkT, selectLightT } from '@/styling/color';
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import Select, {
|
|||
StylesConfig
|
||||
} from 'react-select';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { selectDarkT, selectLightT } from '@/styling/color';
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import { ReactNode } from 'react';
|
|||
import { createPortal } from 'react-dom';
|
||||
import { ITooltip, Tooltip as TooltipImpl } from 'react-tooltip';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
|
||||
export type { PlacesType } from 'react-tooltip';
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ import { RSFormLoader } from '@/models/RSFormLoader';
|
|||
import { contextOutsideScope } from '@/utils/labels';
|
||||
|
||||
import { useAuth } from './AuthContext';
|
||||
import { useConceptOptions } from './OptionsContext';
|
||||
import { useConceptOptions } from './ConceptOptionsContext';
|
||||
|
||||
interface ILibraryContext {
|
||||
items: ILibraryItem[];
|
||||
|
|
|
@ -17,8 +17,8 @@ import { inferTemplatedType, substituteTemplateArgs } from '@/models/rslangAPI';
|
|||
import { PARAMETER } from '@/utils/constants';
|
||||
|
||||
import FormCreateCst from '../DlgCreateCst/FormCreateCst';
|
||||
import ArgumentsTab, { IArgumentsState } from './ArgumentsTab';
|
||||
import TemplateTab, { ITemplateState } from './TemplateTab';
|
||||
import TabArguments, { IArgumentsState } from './TabArguments';
|
||||
import TabTemplate, { ITemplateState } from './TabTemplate';
|
||||
|
||||
interface DlgConstituentaTemplateProps extends Pick<ModalProps, 'hideWindow'> {
|
||||
schema: IRSForm;
|
||||
|
@ -109,7 +109,7 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }:
|
|||
const templatePanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<TemplateTab state={template} partialUpdate={updateTemplate} />
|
||||
<TabTemplate state={template} partialUpdate={updateTemplate} />
|
||||
</TabPanel>
|
||||
),
|
||||
[template, updateTemplate]
|
||||
|
@ -118,7 +118,7 @@ function DlgConstituentaTemplate({ hideWindow, schema, onCreate, insertAfter }:
|
|||
const argumentsPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<ArgumentsTab schema={schema} state={substitutes} partialUpdate={updateSubstitutes} />
|
||||
<TabArguments schema={schema} state={substitutes} partialUpdate={updateSubstitutes} />
|
||||
</TabPanel>
|
||||
),
|
||||
[schema, substitutes, updateSubstitutes]
|
||||
|
|
|
@ -11,12 +11,12 @@ import DataTable, { IConditionalStyle } from '@/components/ui/DataTable';
|
|||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import NoData from '@/components/ui/NoData';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { IConstituenta, IRSForm } from '@/models/rsform';
|
||||
import { IArgumentValue } from '@/models/rslang';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
interface ArgumentsTabProps {
|
||||
interface TabArgumentsProps {
|
||||
state: IArgumentsState;
|
||||
schema: IRSForm;
|
||||
partialUpdate: React.Dispatch<Partial<IArgumentsState>>;
|
||||
|
@ -29,7 +29,7 @@ export interface IArgumentsState {
|
|||
|
||||
const argumentsHelper = createColumnHelper<IArgumentValue>();
|
||||
|
||||
function ArgumentsTab({ state, schema, partialUpdate }: ArgumentsTabProps) {
|
||||
function TabArguments({ state, schema, partialUpdate }: TabArgumentsProps) {
|
||||
const { colors } = useConceptOptions();
|
||||
|
||||
const [selectedCst, setSelectedCst] = useState<IConstituenta | undefined>(undefined);
|
||||
|
@ -226,4 +226,4 @@ function ArgumentsTab({ state, schema, partialUpdate }: ArgumentsTabProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ArgumentsTab;
|
||||
export default TabArguments;
|
|
@ -17,12 +17,12 @@ export interface ITemplateState {
|
|||
filterCategory?: IConstituenta;
|
||||
}
|
||||
|
||||
interface TemplateTabProps {
|
||||
interface TabTemplateProps {
|
||||
state: ITemplateState;
|
||||
partialUpdate: Dispatch<Partial<ITemplateState>>;
|
||||
}
|
||||
|
||||
function TemplateTab({ state, partialUpdate }: TemplateTabProps) {
|
||||
function TabTemplate({ state, partialUpdate }: TabTemplateProps) {
|
||||
const { templates, retrieveTemplate } = useLibrary();
|
||||
const [templateSchema, setTemplateSchema] = useState<IRSForm | undefined>(undefined);
|
||||
|
||||
|
@ -147,4 +147,4 @@ function TemplateTab({ state, partialUpdate }: TemplateTabProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default TemplateTab;
|
||||
export default TabTemplate;
|
|
@ -8,7 +8,7 @@ import Modal, { ModalProps } from '@/components/ui/Modal';
|
|||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import ConstituentsList from './ConstituentsList';
|
||||
import ListConstituents from './ListConstituents';
|
||||
|
||||
interface DlgDeleteCstProps extends Pick<ModalProps, 'hideWindow'> {
|
||||
selected: ConstituentaID[];
|
||||
|
@ -41,8 +41,8 @@ function DlgDeleteCst({ hideWindow, selected, schema, onDelete }: DlgDeleteCstPr
|
|||
onSubmit={handleSubmit}
|
||||
className={clsx('cc-column', 'max-w-[60vw] min-w-[30rem]', 'px-6')}
|
||||
>
|
||||
<ConstituentsList title='Выбраны к удалению' list={selected} schema={schema} prefix={prefixes.cst_delete_list} />
|
||||
<ConstituentsList
|
||||
<ListConstituents title='Выбраны к удалению' list={selected} schema={schema} prefix={prefixes.cst_delete_list} />
|
||||
<ListConstituents
|
||||
title='Зависимые конституенты'
|
||||
list={expansion}
|
||||
schema={schema}
|
||||
|
|
|
@ -3,14 +3,14 @@ import clsx from 'clsx';
|
|||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||
import { labelConstituenta } from '@/utils/labels';
|
||||
|
||||
interface ConstituentsListProps {
|
||||
interface ListConstituentsProps {
|
||||
list: ConstituentaID[];
|
||||
schema: IRSForm;
|
||||
prefix: string;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
function ConstituentsList({ list, schema, title, prefix }: ConstituentsListProps) {
|
||||
function ListConstituents({ list, schema, title, prefix }: ListConstituentsProps) {
|
||||
return (
|
||||
<div>
|
||||
{title ? (
|
||||
|
@ -28,4 +28,4 @@ function ConstituentsList({ list, schema, title, prefix }: ConstituentsListProps
|
|||
);
|
||||
}
|
||||
|
||||
export default ConstituentsList;
|
||||
export default ListConstituents;
|
|
@ -11,7 +11,7 @@ import Modal from '@/components/ui/Modal';
|
|||
import { useUsers } from '@/context/UsersContext';
|
||||
import { UserID } from '@/models/user';
|
||||
|
||||
import UsersTable from './UsersTable';
|
||||
import TableUsers from './TableUsers';
|
||||
|
||||
interface DlgEditEditorsProps {
|
||||
editors: UserID[];
|
||||
|
@ -33,7 +33,7 @@ function DlgEditEditors({ hideWindow, editors, setEditors }: DlgEditEditorsProps
|
|||
const onAddEditor = useCallback((target: UserID) => setSelected(prev => [...prev, target]), []);
|
||||
|
||||
const usersTable = useMemo(
|
||||
() => <UsersTable items={users.filter(user => selected.includes(user.id))} onDelete={onDeleteEditor} />,
|
||||
() => <TableUsers items={users.filter(user => selected.includes(user.id))} onDelete={onDeleteEditor} />,
|
||||
[users, selected, onDeleteEditor]
|
||||
);
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@ import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
|||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import { IUserInfo, UserID } from '@/models/user';
|
||||
|
||||
interface UsersTableProps {
|
||||
interface TableUsersProps {
|
||||
items: IUserInfo[];
|
||||
onDelete: (target: UserID) => void;
|
||||
}
|
||||
|
||||
const columnHelper = createColumnHelper<IUserInfo>();
|
||||
|
||||
function UsersTable({ items, onDelete }: UsersTableProps) {
|
||||
function TableUsers({ items, onDelete }: TableUsersProps) {
|
||||
const columns = useMemo(
|
||||
() => [
|
||||
columnHelper.accessor('last_name', {
|
||||
|
@ -61,4 +61,4 @@ function UsersTable({ items, onDelete }: UsersTableProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default UsersTable;
|
||||
export default TableUsers;
|
|
@ -14,8 +14,8 @@ import { IRSForm } from '@/models/rsform';
|
|||
import { PARAMETER } from '@/utils/constants';
|
||||
import { labelReferenceType } from '@/utils/labels';
|
||||
|
||||
import EntityTab from './EntityTab';
|
||||
import SyntacticTab from './SyntacticTab';
|
||||
import TabEntityReference from './TabEntityReference';
|
||||
import TabSyntacticReference from './TabSyntacticReference';
|
||||
|
||||
export interface IReferenceInputState {
|
||||
type: ReferenceType;
|
||||
|
@ -48,7 +48,7 @@ function DlgEditReference({ hideWindow, schema, initial, onSave }: DlgEditRefere
|
|||
const entityPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<EntityTab initial={initial} schema={schema} setReference={setReference} setIsValid={setIsValid} />
|
||||
<TabEntityReference initial={initial} schema={schema} setReference={setReference} setIsValid={setIsValid} />
|
||||
</TabPanel>
|
||||
),
|
||||
[initial, schema]
|
||||
|
@ -57,7 +57,7 @@ function DlgEditReference({ hideWindow, schema, initial, onSave }: DlgEditRefere
|
|||
const syntacticPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<SyntacticTab initial={initial} setReference={setReference} setIsValid={setIsValid} />
|
||||
<TabSyntacticReference initial={initial} setReference={setReference} setIsValid={setIsValid} />
|
||||
</TabPanel>
|
||||
),
|
||||
[initial]
|
||||
|
|
|
@ -15,17 +15,17 @@ import { matchConstituenta } from '@/models/rsformAPI';
|
|||
import { prefixes } from '@/utils/constants';
|
||||
import { IGrammemeOption, SelectorGrammemes } from '@/utils/selectors';
|
||||
|
||||
import SelectWordForm from '../../components/select/SelectWordForm';
|
||||
import { IReferenceInputState } from './DlgEditReference';
|
||||
import SelectWordForm from './SelectWordForm';
|
||||
|
||||
interface EntityTabProps {
|
||||
interface TabEntityReferenceProps {
|
||||
initial: IReferenceInputState;
|
||||
schema: IRSForm;
|
||||
setIsValid: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
setReference: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
|
||||
function EntityTab({ initial, schema, setIsValid, setReference }: EntityTabProps) {
|
||||
function TabEntityReference({ initial, schema, setIsValid, setReference }: TabEntityReferenceProps) {
|
||||
const [selectedCst, setSelectedCst] = useState<IConstituenta | undefined>(undefined);
|
||||
const [alias, setAlias] = useState('');
|
||||
const [term, setTerm] = useState('');
|
||||
|
@ -112,4 +112,4 @@ function EntityTab({ initial, schema, setIsValid, setReference }: EntityTabProps
|
|||
);
|
||||
}
|
||||
|
||||
export default EntityTab;
|
||||
export default TabEntityReference;
|
|
@ -9,13 +9,13 @@ import { parseSyntacticReference } from '@/models/languageAPI';
|
|||
|
||||
import { IReferenceInputState } from './DlgEditReference';
|
||||
|
||||
interface SyntacticTabProps {
|
||||
interface TabSyntacticReferenceProps {
|
||||
initial: IReferenceInputState;
|
||||
setIsValid: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
setReference: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
|
||||
function SyntacticTab({ initial, setIsValid, setReference }: SyntacticTabProps) {
|
||||
function TabSyntacticReference({ initial, setIsValid, setReference }: TabSyntacticReferenceProps) {
|
||||
const [nominal, setNominal] = useState('');
|
||||
const [offset, setOffset] = useState(1);
|
||||
|
||||
|
@ -74,4 +74,4 @@ function SyntacticTab({ initial, setIsValid, setReference }: SyntacticTabProps)
|
|||
);
|
||||
}
|
||||
|
||||
export default SyntacticTab;
|
||||
export default TabSyntacticReference;
|
|
@ -10,7 +10,7 @@ import TextInput from '@/components/ui/TextInput';
|
|||
import { useRSForm } from '@/context/RSFormContext';
|
||||
import { IVersionData, IVersionInfo, VersionID } from '@/models/library';
|
||||
|
||||
import VersionsTable from './VersionsTable';
|
||||
import TableVersions from './TableVersions';
|
||||
|
||||
interface DlgEditVersionsProps {
|
||||
hideWindow: () => void;
|
||||
|
@ -66,7 +66,7 @@ function DlgEditVersions({ hideWindow, versions, onDelete, onUpdate }: DlgEditVe
|
|||
|
||||
const versionsTable = useMemo(
|
||||
() => (
|
||||
<VersionsTable
|
||||
<TableVersions
|
||||
processing={processing}
|
||||
items={versions}
|
||||
onDelete={onDelete}
|
||||
|
|
|
@ -7,10 +7,10 @@ import { useIntl } from 'react-intl';
|
|||
import { IconRemove } from '@/components/Icons';
|
||||
import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { IVersionInfo, VersionID } from '@/models/library';
|
||||
|
||||
interface VersionsTableProps {
|
||||
interface TableVersionsProps {
|
||||
processing: boolean;
|
||||
items: IVersionInfo[];
|
||||
selected?: VersionID;
|
||||
|
@ -20,7 +20,7 @@ interface VersionsTableProps {
|
|||
|
||||
const columnHelper = createColumnHelper<IVersionInfo>();
|
||||
|
||||
function VersionsTable({ processing, items, onDelete, selected, onSelect }: VersionsTableProps) {
|
||||
function TableVersions({ processing, items, onDelete, selected, onSelect }: TableVersionsProps) {
|
||||
const intl = useIntl();
|
||||
const { colors } = useConceptOptions();
|
||||
|
||||
|
@ -102,4 +102,4 @@ function VersionsTable({ processing, items, onDelete, selected, onSelect }: Vers
|
|||
);
|
||||
}
|
||||
|
||||
export default VersionsTable;
|
||||
export default TableVersions;
|
|
@ -20,7 +20,7 @@ import { PARAMETER } from '@/utils/constants';
|
|||
import { prompts } from '@/utils/labels';
|
||||
import { IGrammemeOption, SelectorGrammemes, SelectorGrammemesList } from '@/utils/selectors';
|
||||
|
||||
import WordFormsTable from './WordFormsTable';
|
||||
import TableWordForms from './TableWordForms';
|
||||
|
||||
interface DlgEditWordFormsProps {
|
||||
hideWindow: () => void;
|
||||
|
@ -216,7 +216,7 @@ function DlgEditWordForms({ hideWindow, target, onSave }: DlgEditWordFormsProps)
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<WordFormsTable forms={forms} setForms={setForms} onFormSelect={handleSelectForm} />
|
||||
<TableWordForms forms={forms} setForms={setForms} onFormSelect={handleSelectForm} />
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import MiniButton from '@/components/ui/MiniButton';
|
|||
import NoData from '@/components/ui/NoData';
|
||||
import { IWordForm } from '@/models/language';
|
||||
|
||||
interface WordFormsTableProps {
|
||||
interface TableWordFormsProps {
|
||||
forms: IWordForm[];
|
||||
setForms: React.Dispatch<React.SetStateAction<IWordForm[]>>;
|
||||
onFormSelect?: (form: IWordForm) => void;
|
||||
|
@ -18,7 +18,7 @@ interface WordFormsTableProps {
|
|||
|
||||
const columnHelper = createColumnHelper<IWordForm>();
|
||||
|
||||
function WordFormsTable({ forms, setForms, onFormSelect }: WordFormsTableProps) {
|
||||
function TableWordForms({ forms, setForms, onFormSelect }: TableWordFormsProps) {
|
||||
const handleDeleteRow = useCallback(
|
||||
(row: number) => {
|
||||
setForms(prev => {
|
||||
|
@ -89,4 +89,4 @@ function WordFormsTable({ forms, setForms, onFormSelect }: WordFormsTableProps)
|
|||
);
|
||||
}
|
||||
|
||||
export default WordFormsTable;
|
||||
export default TableWordForms;
|
|
@ -10,9 +10,9 @@ import useRSFormDetails from '@/hooks/useRSFormDetails';
|
|||
import { LibraryItemID } from '@/models/library';
|
||||
import { IInlineSynthesisData, IRSForm, ISubstitution } from '@/models/rsform';
|
||||
|
||||
import ConstituentsTab from './ConstituentsTab';
|
||||
import SchemaTab from './SchemaTab';
|
||||
import SubstitutionsTab from './SubstitutionsTab';
|
||||
import TabConstituents from './TabConstituents';
|
||||
import TabSchema from './TabSchema';
|
||||
import TabSubstitutions from './TabSubstitutions';
|
||||
|
||||
interface DlgInlineSynthesisProps extends Pick<ModalProps, 'hideWindow'> {
|
||||
receiver: IRSForm;
|
||||
|
@ -61,7 +61,7 @@ function DlgInlineSynthesis({ hideWindow, receiver, onInlineSynthesis }: DlgInli
|
|||
const schemaPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<SchemaTab selected={donorID} setSelected={setDonorID} />
|
||||
<TabSchema selected={donorID} setSelected={setDonorID} />
|
||||
</TabPanel>
|
||||
),
|
||||
[donorID]
|
||||
|
@ -69,7 +69,7 @@ function DlgInlineSynthesis({ hideWindow, receiver, onInlineSynthesis }: DlgInli
|
|||
const itemsPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<ConstituentsTab
|
||||
<TabConstituents
|
||||
schema={source.schema}
|
||||
loading={source.loading}
|
||||
selected={selected}
|
||||
|
@ -82,7 +82,7 @@ function DlgInlineSynthesis({ hideWindow, receiver, onInlineSynthesis }: DlgInli
|
|||
const substitutesPanel = useMemo(
|
||||
() => (
|
||||
<TabPanel>
|
||||
<SubstitutionsTab
|
||||
<TabSubstitutions
|
||||
receiver={receiver}
|
||||
source={source.schema}
|
||||
selected={selected}
|
||||
|
|
|
@ -6,7 +6,7 @@ import DataLoader from '@/components/wrap/DataLoader';
|
|||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
interface ConstituentsTabProps {
|
||||
interface TabConstituentsProps {
|
||||
schema?: IRSForm;
|
||||
loading?: boolean;
|
||||
error?: ErrorData;
|
||||
|
@ -14,7 +14,7 @@ interface ConstituentsTabProps {
|
|||
setSelected: React.Dispatch<React.SetStateAction<ConstituentaID[]>>;
|
||||
}
|
||||
|
||||
function ConstituentsTab({ schema, error, loading, selected, setSelected }: ConstituentsTabProps) {
|
||||
function TabConstituents({ schema, error, loading, selected, setSelected }: TabConstituentsProps) {
|
||||
return (
|
||||
<DataLoader id='dlg-constituents-tab' isLoading={loading} error={error} hasNoData={!schema}>
|
||||
<PickMultiConstituenta
|
||||
|
@ -28,4 +28,4 @@ function ConstituentsTab({ schema, error, loading, selected, setSelected }: Cons
|
|||
);
|
||||
}
|
||||
|
||||
export default ConstituentsTab;
|
||||
export default TabConstituents;
|
|
@ -8,12 +8,12 @@ import AnimateFade from '@/components/wrap/AnimateFade';
|
|||
import { useLibrary } from '@/context/LibraryContext';
|
||||
import { LibraryItemID } from '@/models/library';
|
||||
|
||||
interface SchemaTabProps {
|
||||
interface TabSchemaProps {
|
||||
selected?: LibraryItemID;
|
||||
setSelected: (newValue: LibraryItemID) => void;
|
||||
}
|
||||
|
||||
function SchemaTab({ selected, setSelected }: SchemaTabProps) {
|
||||
function TabSchema({ selected, setSelected }: TabSchemaProps) {
|
||||
const library = useLibrary();
|
||||
const selectedInfo = useMemo(() => library.items.find(item => item.id === selected), [selected, library.items]);
|
||||
|
||||
|
@ -41,4 +41,4 @@ function SchemaTab({ selected, setSelected }: SchemaTabProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default SchemaTab;
|
||||
export default TabSchema;
|
|
@ -7,7 +7,7 @@ import { prefixes } from '@/utils/constants';
|
|||
|
||||
import PickSubstitutions from '../../components/select/PickSubstitutions';
|
||||
|
||||
interface SubstitutionsTabProps {
|
||||
interface TabSubstitutionsProps {
|
||||
receiver?: IRSForm;
|
||||
source?: IRSForm;
|
||||
selected: ConstituentaID[];
|
||||
|
@ -19,7 +19,7 @@ interface SubstitutionsTabProps {
|
|||
setSubstitutions: React.Dispatch<React.SetStateAction<ISubstitution[]>>;
|
||||
}
|
||||
|
||||
function SubstitutionsTab({
|
||||
function TabSubstitutions({
|
||||
source,
|
||||
receiver,
|
||||
selected,
|
||||
|
@ -29,7 +29,7 @@ function SubstitutionsTab({
|
|||
|
||||
substitutions,
|
||||
setSubstitutions
|
||||
}: SubstitutionsTabProps) {
|
||||
}: TabSubstitutionsProps) {
|
||||
return (
|
||||
<DataLoader id='dlg-substitutions-tab' className='cc-column' isLoading={loading} error={error} hasNoData={!source}>
|
||||
<PickSubstitutions
|
||||
|
@ -45,4 +45,4 @@ function SubstitutionsTab({
|
|||
);
|
||||
}
|
||||
|
||||
export default SubstitutionsTab;
|
||||
export default TabSubstitutions;
|
|
@ -6,7 +6,7 @@ import BadgeHelp from '@/components/info/BadgeHelp';
|
|||
import GraphUI, { GraphEdge, GraphNode } from '@/components/ui/GraphUI';
|
||||
import Modal, { ModalProps } from '@/components/ui/Modal';
|
||||
import Overlay from '@/components/ui/Overlay';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
import { SyntaxTree } from '@/models/rslang';
|
||||
import { graphDarkT, graphLightT } from '@/styling/color';
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
'use client';
|
||||
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
import { DataCallback, postResolveText } from '@/app/backendAPI';
|
||||
import { ErrorData } from '@/components/info/InfoError';
|
||||
import { IResolutionData } from '@/models/language';
|
||||
import { IRSForm } from '@/models/rsform';
|
||||
|
||||
function useResolveText({ schema }: { schema?: IRSForm }) {
|
||||
const [processing, setProcessing] = useState(false);
|
||||
const [error, setError] = useState<ErrorData>(undefined);
|
||||
const [refsData, setRefsData] = useState<IResolutionData | undefined>(undefined);
|
||||
|
||||
const resetData = useCallback(() => setRefsData(undefined), []);
|
||||
|
||||
function resolveText(text: string, onSuccess?: DataCallback<IResolutionData>) {
|
||||
setError(undefined);
|
||||
postResolveText(String(schema!.id), {
|
||||
data: { text: text },
|
||||
showError: true,
|
||||
setLoading: setProcessing,
|
||||
onError: setError,
|
||||
onSuccess: data => {
|
||||
setRefsData(data);
|
||||
if (onSuccess) onSuccess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return { refsData, resolveText, resetData, error, setError, processing };
|
||||
}
|
||||
|
||||
export default useResolveText;
|
|
@ -291,12 +291,3 @@ export interface IResolvedReference extends IReference {
|
|||
pos_input: ITextPosition;
|
||||
pos_output: ITextPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents resolved references data for the whole text.
|
||||
*/
|
||||
export interface IResolutionData {
|
||||
input: string;
|
||||
output: string;
|
||||
refs: IResolvedReference[];
|
||||
}
|
||||
|
|
|
@ -12,9 +12,9 @@ import { ILibraryFilter } from '@/models/miscellaneous';
|
|||
import { storage } from '@/utils/constants';
|
||||
import { toggleTristateFlag } from '@/utils/utils';
|
||||
|
||||
import LibraryFolders from './LibraryFolders';
|
||||
import LibraryTable from './LibraryTable';
|
||||
import SearchPanel from './SearchPanel';
|
||||
import TableLibraryItems from './TableLibraryItems';
|
||||
import ToolbarSearch from './ToolbarSearch';
|
||||
import ViewSideFolders from './ViewSideFolders';
|
||||
|
||||
function LibraryPage() {
|
||||
const library = useLibrary();
|
||||
|
@ -86,7 +86,7 @@ function LibraryPage() {
|
|||
|
||||
const view = useMemo(
|
||||
() => (
|
||||
<LibraryTable
|
||||
<TableLibraryItems
|
||||
resetQuery={resetFilter} // prettier: split lines
|
||||
items={items}
|
||||
folderMode={folderMode}
|
||||
|
@ -103,7 +103,7 @@ function LibraryPage() {
|
|||
error={library.loadingError}
|
||||
hasNoData={library.items.length === 0}
|
||||
>
|
||||
<SearchPanel
|
||||
<ToolbarSearch
|
||||
total={library.items.length ?? 0}
|
||||
filtered={items.length}
|
||||
hasCustomFilter={hasCustomFilter}
|
||||
|
@ -129,7 +129,7 @@ function LibraryPage() {
|
|||
<div className='flex'>
|
||||
<AnimatePresence initial={false}>
|
||||
{folderMode ? (
|
||||
<LibraryFolders
|
||||
<ViewSideFolders
|
||||
currentFolder={folder} // prettier: split-lines
|
||||
setFolder={setFolder}
|
||||
folders={library.folders}
|
||||
|
|
|
@ -12,15 +12,15 @@ import DataTable, { createColumnHelper, IConditionalStyle, VisibilityState } fro
|
|||
import FlexColumn from '@/components/ui/FlexColumn';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useUsers } from '@/context/UsersContext';
|
||||
import useLocalStorage from '@/hooks/useLocalStorage';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { ILibraryItem, LibraryItemType } from '@/models/library';
|
||||
import { storage } from '@/utils/constants';
|
||||
|
||||
interface LibraryTableProps {
|
||||
interface TableLibraryItemsProps {
|
||||
items: ILibraryItem[];
|
||||
resetQuery: () => void;
|
||||
folderMode: boolean;
|
||||
|
@ -29,7 +29,7 @@ interface LibraryTableProps {
|
|||
|
||||
const columnHelper = createColumnHelper<ILibraryItem>();
|
||||
|
||||
function LibraryTable({ items, resetQuery, folderMode, toggleFolderMode }: LibraryTableProps) {
|
||||
function TableLibraryItems({ items, resetQuery, folderMode, toggleFolderMode }: TableLibraryItemsProps) {
|
||||
const router = useConceptNavigation();
|
||||
const intl = useIntl();
|
||||
const { getUserLabel } = useUsers();
|
||||
|
@ -188,4 +188,4 @@ function LibraryTable({ items, resetQuery, folderMode, toggleFolderMode }: Libra
|
|||
);
|
||||
}
|
||||
|
||||
export default LibraryTable;
|
||||
export default TableLibraryItems;
|
|
@ -18,7 +18,7 @@ import { prefixes } from '@/utils/constants';
|
|||
import { describeLocationHead, labelLocationHead } from '@/utils/labels';
|
||||
import { tripleToggleColor } from '@/utils/utils';
|
||||
|
||||
interface SearchPanelProps {
|
||||
interface ToolbarSearchProps {
|
||||
total: number;
|
||||
filtered: number;
|
||||
hasCustomFilter: boolean;
|
||||
|
@ -44,7 +44,7 @@ interface SearchPanelProps {
|
|||
resetFilter: () => void;
|
||||
}
|
||||
|
||||
function SearchPanel({
|
||||
function ToolbarSearch({
|
||||
total,
|
||||
filtered,
|
||||
hasCustomFilter,
|
||||
|
@ -68,7 +68,7 @@ function SearchPanel({
|
|||
isEditor,
|
||||
toggleEditor,
|
||||
resetFilter
|
||||
}: SearchPanelProps) {
|
||||
}: ToolbarSearchProps) {
|
||||
const { user } = useAuth();
|
||||
const headMenu = useDropdown();
|
||||
|
||||
|
@ -219,4 +219,4 @@ function SearchPanel({
|
|||
);
|
||||
}
|
||||
|
||||
export default SearchPanel;
|
||||
export default ToolbarSearch;
|
|
@ -14,14 +14,14 @@ import { animateSideView } from '@/styling/animations';
|
|||
import { PARAMETER, prefixes } from '@/utils/constants';
|
||||
import { information } from '@/utils/labels';
|
||||
|
||||
interface LibraryTableProps {
|
||||
interface ViewSideFoldersProps {
|
||||
folders: FolderTree;
|
||||
currentFolder: string;
|
||||
setFolder: React.Dispatch<React.SetStateAction<string>>;
|
||||
toggleFolderMode: () => void;
|
||||
}
|
||||
|
||||
function LibraryFolders({ folders, currentFolder, setFolder, toggleFolderMode }: LibraryTableProps) {
|
||||
function ViewSideFolders({ folders, currentFolder, setFolder, toggleFolderMode }: ViewSideFoldersProps) {
|
||||
const handleClickFolder = useCallback(
|
||||
(event: CProps.EventMouse, target: FolderNode) => {
|
||||
event.preventDefault();
|
||||
|
@ -68,4 +68,4 @@ function LibraryFolders({ folders, currentFolder, setFolder, toggleFolderMode }:
|
|||
);
|
||||
}
|
||||
|
||||
export default LibraryFolders;
|
||||
export default ViewSideFolders;
|
|
@ -3,8 +3,8 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { urls } from '@/app/urls';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import useQueryStrings from '@/hooks/useQueryStrings';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import { useCallback } from 'react';
|
|||
import { IconMenuFold, IconMenuUnfold } from '@/components/Icons';
|
||||
import Button from '@/components/ui/Button';
|
||||
import SelectTree from '@/components/ui/SelectTree';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useDropdown from '@/hooks/useDropdown';
|
||||
import { HelpTopic, topicParent } from '@/models/miscellaneous';
|
||||
import { animateSlideLeft } from '@/styling/animations';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import SelectTree from '@/components/ui/SelectTree';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { HelpTopic, topicParent } from '@/models/miscellaneous';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
|
||||
|
|
|
@ -14,7 +14,7 @@ import {
|
|||
IconTree
|
||||
} from '@/components/Icons';
|
||||
import LinkTopic from '@/components/ui/LinkTopic';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
function HelpCstEditor() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
|
||||
function HelpFormulaTree() {
|
||||
const { colors } = useConceptOptions();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import Divider from '@/components/ui/Divider';
|
||||
import LinkTopic from '@/components/ui/LinkTopic';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import {
|
||||
|
@ -68,7 +68,7 @@ function HelpTermGraph() {
|
|||
|
||||
<Divider margins='my-3' className='hidden sm:block' />
|
||||
|
||||
<div className='flex mb-3 flex-col-reverse sm:flex-row'>
|
||||
<div className='flex flex-col-reverse mb-3 sm:flex-row'>
|
||||
<div className='w-full sm:w-[14rem]'>
|
||||
<h1>Общие</h1>
|
||||
<li>
|
||||
|
|
|
@ -7,11 +7,11 @@ import AnimateFade from '@/components/wrap/AnimateFade';
|
|||
import { useAuth } from '@/context/AuthContext';
|
||||
import { useOSS } from '@/context/OssContext';
|
||||
import EditorLibraryItem from '@/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem';
|
||||
import ToolbarRSFormCard from '@/pages/RSFormPage/EditorRSFormCard/ToolbarRSFormCard';
|
||||
import { globals } from '@/utils/constants';
|
||||
|
||||
import { useOssEdit } from '../OssEditContext';
|
||||
import FormOSS from './FormOSS';
|
||||
import RSFormToolbar from './OssFormToolbar';
|
||||
|
||||
interface EditorOssCardProps {
|
||||
isModified: boolean;
|
||||
|
@ -42,7 +42,7 @@ function EditorOssCard({ isModified, onDestroy, setIsModified }: EditorOssCardPr
|
|||
|
||||
return (
|
||||
<>
|
||||
<RSFormToolbar
|
||||
<ToolbarRSFormCard
|
||||
subscribed={isSubscribed}
|
||||
modified={isModified}
|
||||
anonymous={!user}
|
||||
|
|
|
@ -10,7 +10,7 @@ import TextArea from '@/components/ui/TextArea';
|
|||
import TextInput from '@/components/ui/TextInput';
|
||||
import { useOSS } from '@/context/OssContext';
|
||||
import { ILibraryUpdateData, LibraryItemType } from '@/models/library';
|
||||
import AccessToolbar from '@/pages/RSFormPage/EditorRSFormCard/AccessToolbar';
|
||||
import ToolbarItemAccess from '@/pages/RSFormPage/EditorRSFormCard/ToolbarItemAccess';
|
||||
import { limits, patterns } from '@/utils/constants';
|
||||
import { information } from '@/utils/labels';
|
||||
|
||||
|
@ -108,7 +108,7 @@ function FormOSS({ id, isModified, setIsModified }: FormOSSProps) {
|
|||
value={alias}
|
||||
onChange={event => setAlias(event.target.value)}
|
||||
/>
|
||||
<AccessToolbar
|
||||
<ToolbarItemAccess
|
||||
visible={visible}
|
||||
toggleVisible={() => setVisible(prev => !prev)}
|
||||
readOnly={readOnly}
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
'use client';
|
||||
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { SubscribeIcon } from '@/components/DomainIcons';
|
||||
import { IconDestroy, IconSave, IconShare } from '@/components/Icons';
|
||||
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import Overlay from '@/components/ui/Overlay';
|
||||
import { useAccessMode } from '@/context/AccessModeContext';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
import { UserLevel } from '@/models/user';
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
import { prepareTooltip } from '@/utils/labels';
|
||||
|
||||
import { useOssEdit } from '../OssEditContext';
|
||||
|
||||
interface RSFormToolbarProps {
|
||||
modified: boolean;
|
||||
subscribed: boolean;
|
||||
anonymous: boolean;
|
||||
onSubmit: () => void;
|
||||
onDestroy: () => void;
|
||||
}
|
||||
|
||||
function RSFormToolbar({ modified, anonymous, subscribed, onSubmit, onDestroy }: RSFormToolbarProps) {
|
||||
const controller = useOssEdit();
|
||||
const { accessLevel } = useAccessMode();
|
||||
const canSave = useMemo(() => modified && !controller.isProcessing, [modified, controller.isProcessing]);
|
||||
return (
|
||||
<Overlay position='top-1 right-1/2 translate-x-1/2' className='cc-icons'>
|
||||
{controller.isMutable || modified ? (
|
||||
<MiniButton
|
||||
titleHtml={prepareTooltip('Сохранить изменения', 'Ctrl + S')}
|
||||
disabled={!canSave}
|
||||
icon={<IconSave size='1.25rem' className='icon-primary' />}
|
||||
onClick={onSubmit}
|
||||
/>
|
||||
) : null}
|
||||
<MiniButton
|
||||
title='Поделиться схемой'
|
||||
icon={<IconShare size='1.25rem' className='icon-primary' />}
|
||||
onClick={controller.share}
|
||||
/>
|
||||
{!anonymous ? (
|
||||
<MiniButton
|
||||
titleHtml={`Отслеживание <b>${subscribed ? 'включено' : 'выключено'}</b>`}
|
||||
icon={<SubscribeIcon value={subscribed} className={subscribed ? 'icon-primary' : 'clr-text-controls'} />}
|
||||
disabled={controller.isProcessing}
|
||||
onClick={controller.toggleSubscribe}
|
||||
/>
|
||||
) : null}
|
||||
{controller.isMutable ? (
|
||||
<MiniButton
|
||||
title='Удалить схему'
|
||||
icon={<IconDestroy size='1.25rem' className='icon-red' />}
|
||||
disabled={!controller.isMutable || controller.isProcessing || accessLevel < UserLevel.OWNER}
|
||||
onClick={onDestroy}
|
||||
/>
|
||||
) : null}
|
||||
<BadgeHelp topic={HelpTopic.UI_RS_CARD} offset={4} className={PARAMETER.TOOLTIP_WIDTH} />
|
||||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
||||
export default RSFormToolbar;
|
|
@ -27,11 +27,11 @@ import { describeAccessMode, labelAccessMode } from '@/utils/labels';
|
|||
|
||||
import { useOssEdit } from './OssEditContext';
|
||||
|
||||
interface OssTabsMenuProps {
|
||||
interface MenuOssTabsProps {
|
||||
onDestroy: () => void;
|
||||
}
|
||||
|
||||
function OssTabsMenu({ onDestroy }: OssTabsMenuProps) {
|
||||
function MenuOssTabs({ onDestroy }: MenuOssTabsProps) {
|
||||
const controller = useOssEdit();
|
||||
const router = useConceptNavigation();
|
||||
const { user } = useAuth();
|
||||
|
@ -200,4 +200,4 @@ function OssTabsMenu({ onDestroy }: OssTabsMenuProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default OssTabsMenu;
|
||||
export default MenuOssTabs;
|
|
@ -6,7 +6,7 @@ import { toast } from 'react-toastify';
|
|||
|
||||
import { useAccessMode } from '@/context/AccessModeContext';
|
||||
import { useAuth } from '@/context/AuthContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useOSS } from '@/context/OssContext';
|
||||
import DlgChangeLocation from '@/dialogs/DlgChangeLocation';
|
||||
import DlgEditEditors from '@/dialogs/DlgEditEditors';
|
||||
|
|
|
@ -12,17 +12,17 @@ import Loader from '@/components/ui/Loader';
|
|||
import TabLabel from '@/components/ui/TabLabel';
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useLibrary } from '@/context/LibraryContext';
|
||||
import { useBlockNavigation, useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useOSS } from '@/context/OssContext';
|
||||
import useQueryStrings from '@/hooks/useQueryStrings';
|
||||
import { information, prompts } from '@/utils/labels';
|
||||
|
||||
import EditorRSForm from './EditorOssCard';
|
||||
import EditorTermGraph from './EditorOssGraph';
|
||||
import MenuOssTabs from './MenuOssTabs';
|
||||
import { OssEditState } from './OssEditContext';
|
||||
import OssTabsMenu from './OssTabsMenu';
|
||||
|
||||
export enum OssTabID {
|
||||
CARD = 0,
|
||||
|
@ -131,7 +131,7 @@ function OssTabs() {
|
|||
className='flex flex-col mx-auto min-w-fit'
|
||||
>
|
||||
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
||||
<OssTabsMenu onDestroy={onDestroySchema} />
|
||||
<MenuOssTabs onDestroy={onDestroySchema} />
|
||||
|
||||
<TabLabel label='Карточка' titleHtml={`Название: <b>${schema.title ?? ''}</b>`} />
|
||||
<TabLabel label='Граф' />
|
||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
|||
import { AnimatePresence } from 'framer-motion';
|
||||
import { useMemo, useState } from 'react';
|
||||
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useLocalStorage from '@/hooks/useLocalStorage';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { ConstituentaID, IConstituenta } from '@/models/rsform';
|
||||
|
@ -12,8 +12,8 @@ import { globals, storage } from '@/utils/constants';
|
|||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
import ViewConstituents from '../ViewConstituents';
|
||||
import ConstituentaToolbar from './ConstituentaToolbar';
|
||||
import FormConstituenta from './FormConstituenta';
|
||||
import ToolbarConstituenta from './ToolbarConstituenta';
|
||||
|
||||
// Threshold window width to switch layout.
|
||||
const SIDELIST_LAYOUT_THRESHOLD = 1000; // px
|
||||
|
@ -81,7 +81,7 @@ function EditorConstituenta({ activeCst, isModified, setIsModified, onOpenEdit }
|
|||
return (
|
||||
<div className='overflow-y-auto' style={{ maxHeight: panelHeight }}>
|
||||
{controller.isContentEditable ? (
|
||||
<ConstituentaToolbar
|
||||
<ToolbarConstituenta
|
||||
disabled={disabled}
|
||||
modified={isModified}
|
||||
showList={showList}
|
||||
|
|
|
@ -16,7 +16,7 @@ import { HelpTopic } from '@/models/miscellaneous';
|
|||
import { PARAMETER } from '@/utils/constants';
|
||||
import { prepareTooltip, tooltips } from '@/utils/labels';
|
||||
|
||||
interface ConstituentaToolbarProps {
|
||||
interface ToolbarConstituentaProps {
|
||||
disabled: boolean;
|
||||
modified: boolean;
|
||||
showList: boolean;
|
||||
|
@ -32,7 +32,7 @@ interface ConstituentaToolbarProps {
|
|||
onToggleList: () => void;
|
||||
}
|
||||
|
||||
function ConstituentaToolbar({
|
||||
function ToolbarConstituenta({
|
||||
disabled,
|
||||
modified,
|
||||
showList,
|
||||
|
@ -45,7 +45,7 @@ function ConstituentaToolbar({
|
|||
onClone,
|
||||
onCreate,
|
||||
onToggleList
|
||||
}: ConstituentaToolbarProps) {
|
||||
}: ToolbarConstituentaProps) {
|
||||
return (
|
||||
<Overlay position='top-1 right-4' className='cc-icons sm:right-1/2 sm:translate-x-1/2'>
|
||||
<MiniButton
|
||||
|
@ -100,4 +100,4 @@ function ConstituentaToolbar({
|
|||
);
|
||||
}
|
||||
|
||||
export default ConstituentaToolbar;
|
||||
export default ToolbarConstituenta;
|
|
@ -21,10 +21,10 @@ import { TokenID } from '@/models/rslang';
|
|||
import { storage } from '@/utils/constants';
|
||||
import { errors, labelTypification } from '@/utils/labels';
|
||||
|
||||
import ExpressionToolbar from './ExpressionToolbar';
|
||||
import ParsingResult from './ParsingResult';
|
||||
import RSEditorControls from './RSEditControls';
|
||||
import StatusBar from './StatusBar';
|
||||
import ToolbarRSExpression from './ToolbarRSExpression';
|
||||
|
||||
interface EditorRSExpressionProps {
|
||||
id?: string;
|
||||
|
@ -161,7 +161,7 @@ function EditorRSExpression({
|
|||
) : null}
|
||||
</AnimatePresence>
|
||||
|
||||
<ExpressionToolbar
|
||||
<ToolbarRSExpression
|
||||
disabled={disabled}
|
||||
showControls={showControls}
|
||||
showAST={handleShowAST}
|
||||
|
|
|
@ -6,7 +6,7 @@ import { useMemo } from 'react';
|
|||
|
||||
import { StatusIcon } from '@/components/DomainIcons';
|
||||
import Loader from '@/components/ui/Loader';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ExpressionStatus } from '@/models/rsform';
|
||||
import { type IConstituenta } from '@/models/rsform';
|
||||
import { inferStatus } from '@/models/rsformAPI';
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { IconControls, IconText, IconTextOff, IconTree } from '@/components/Icons';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import Overlay from '@/components/ui/Overlay';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useRSForm } from '@/context/RSFormContext';
|
||||
|
||||
interface ExpressionToolbarProps {
|
||||
interface ToolbarRSExpressionProps {
|
||||
disabled?: boolean;
|
||||
showControls: boolean;
|
||||
|
||||
|
@ -12,7 +12,7 @@ interface ExpressionToolbarProps {
|
|||
showAST: () => void;
|
||||
}
|
||||
|
||||
function ExpressionToolbar({ disabled, showControls, toggleControls, showAST }: ExpressionToolbarProps) {
|
||||
function ToolbarRSExpression({ disabled, showControls, toggleControls, showAST }: ToolbarRSExpressionProps) {
|
||||
const model = useRSForm();
|
||||
const { mathFont, setMathFont } = useConceptOptions();
|
||||
|
||||
|
@ -45,4 +45,4 @@ function ExpressionToolbar({ disabled, showControls, toggleControls, showAST }:
|
|||
);
|
||||
}
|
||||
|
||||
export default ExpressionToolbar;
|
||||
export default ToolbarRSExpression;
|
|
@ -12,7 +12,7 @@ import { useRSEdit } from '../RSEditContext';
|
|||
import EditorLibraryItem from './EditorLibraryItem';
|
||||
import FormRSForm from './FormRSForm';
|
||||
import RSFormStats from './RSFormStats';
|
||||
import RSFormToolbar from './RSFormToolbar';
|
||||
import ToolbarRSFormCard from './ToolbarRSFormCard';
|
||||
|
||||
interface EditorRSFormCardProps {
|
||||
isModified: boolean;
|
||||
|
@ -43,7 +43,7 @@ function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSForm
|
|||
|
||||
return (
|
||||
<>
|
||||
<RSFormToolbar
|
||||
<ToolbarRSFormCard
|
||||
subscribed={isSubscribed}
|
||||
modified={isModified}
|
||||
anonymous={!user}
|
||||
|
|
|
@ -16,8 +16,8 @@ import { limits, patterns } from '@/utils/constants';
|
|||
import { information } from '@/utils/labels';
|
||||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
import AccessToolbar from './AccessToolbar';
|
||||
import VersionsToolbar from './VersionsToolbar';
|
||||
import ToolbarItemAccess from './ToolbarItemAccess';
|
||||
import ToolbarVersioning from './ToolbarVersioning';
|
||||
|
||||
interface FormRSFormProps {
|
||||
id?: string;
|
||||
|
@ -112,8 +112,8 @@ function FormRSForm({ id, isModified, setIsModified }: FormRSFormProps) {
|
|||
onChange={event => setAlias(event.target.value)}
|
||||
/>
|
||||
<div className='flex flex-col'>
|
||||
<VersionsToolbar />
|
||||
<AccessToolbar
|
||||
<ToolbarVersioning />
|
||||
<ToolbarItemAccess
|
||||
visible={visible}
|
||||
toggleVisible={() => setVisible(prev => !prev)}
|
||||
readOnly={readOnly}
|
||||
|
|
|
@ -13,7 +13,7 @@ import { HelpTopic } from '@/models/miscellaneous';
|
|||
import { UserLevel } from '@/models/user';
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
|
||||
interface AccessToolbarProps {
|
||||
interface ToolbarItemAccessProps {
|
||||
visible: boolean;
|
||||
toggleVisible: () => void;
|
||||
readOnly: boolean;
|
||||
|
@ -21,7 +21,7 @@ interface AccessToolbarProps {
|
|||
controller: ILibraryItemEditor;
|
||||
}
|
||||
|
||||
function AccessToolbar({ visible, toggleVisible, readOnly, toggleReadOnly, controller }: AccessToolbarProps) {
|
||||
function ToolbarItemAccess({ visible, toggleVisible, readOnly, toggleReadOnly, controller }: ToolbarItemAccessProps) {
|
||||
const { accessLevel } = useAccessMode();
|
||||
const policy = useMemo(
|
||||
() => controller.schema?.access_policy ?? AccessPolicy.PRIVATE,
|
||||
|
@ -64,4 +64,4 @@ function AccessToolbar({ visible, toggleVisible, readOnly, toggleReadOnly, contr
|
|||
);
|
||||
}
|
||||
|
||||
export default AccessToolbar;
|
||||
export default ToolbarItemAccess;
|
|
@ -16,7 +16,7 @@ import { prepareTooltip, tooltips } from '@/utils/labels';
|
|||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
interface RSFormToolbarProps {
|
||||
interface ToolbarRSFormCardProps {
|
||||
modified: boolean;
|
||||
subscribed: boolean;
|
||||
anonymous: boolean;
|
||||
|
@ -24,7 +24,7 @@ interface RSFormToolbarProps {
|
|||
onDestroy: () => void;
|
||||
}
|
||||
|
||||
function RSFormToolbar({ modified, anonymous, subscribed, onSubmit, onDestroy }: RSFormToolbarProps) {
|
||||
function ToolbarRSFormCard({ modified, anonymous, subscribed, onSubmit, onDestroy }: ToolbarRSFormCardProps) {
|
||||
const controller = useRSEdit();
|
||||
const { accessLevel } = useAccessMode();
|
||||
const canSave = useMemo(() => modified && !controller.isProcessing, [modified, controller.isProcessing]);
|
||||
|
@ -65,4 +65,4 @@ function RSFormToolbar({ modified, anonymous, subscribed, onSubmit, onDestroy }:
|
|||
);
|
||||
}
|
||||
|
||||
export default RSFormToolbar;
|
||||
export default ToolbarRSFormCard;
|
|
@ -7,10 +7,10 @@ import { PARAMETER } from '@/utils/constants';
|
|||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
function VersionsToolbar() {
|
||||
function ToolbarVersioning() {
|
||||
const controller = useRSEdit();
|
||||
return (
|
||||
<Overlay position='top-[-0.4rem] right-[0rem]' className='cc-icons pr-2'>
|
||||
<Overlay position='top-[-0.4rem] right-[0rem]' className='pr-2 cc-icons'>
|
||||
{controller.isMutable ? (
|
||||
<>
|
||||
<MiniButton
|
||||
|
@ -40,4 +40,4 @@ function VersionsToolbar() {
|
|||
);
|
||||
}
|
||||
|
||||
export default VersionsToolbar;
|
||||
export default ToolbarVersioning;
|
|
@ -6,12 +6,12 @@ import { useLayoutEffect, useMemo, useState } from 'react';
|
|||
import SelectedCounter from '@/components/info/SelectedCounter';
|
||||
import { type RowSelectionState } from '@/components/ui/DataTable';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ConstituentaID, CstType } from '@/models/rsform';
|
||||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
import RSListToolbar from './RSListToolbar';
|
||||
import RSTable from './RSTable';
|
||||
import TableRSList from './TableRSList';
|
||||
import ToolbarRSList from './ToolbarRSList';
|
||||
|
||||
interface EditorRSListProps {
|
||||
onOpenEdit: (cstID: ConstituentaID) => void;
|
||||
|
@ -104,7 +104,7 @@ function EditorRSList({ onOpenEdit }: EditorRSListProps) {
|
|||
|
||||
return (
|
||||
<>
|
||||
{controller.isContentEditable ? <RSListToolbar /> : null}
|
||||
{controller.isContentEditable ? <ToolbarRSList /> : null}
|
||||
<AnimateFade tabIndex={-1} onKeyDown={handleKeyDown}>
|
||||
{controller.isContentEditable ? (
|
||||
<SelectedCounter
|
||||
|
@ -121,7 +121,7 @@ function EditorRSList({ onOpenEdit }: EditorRSListProps) {
|
|||
})}
|
||||
/>
|
||||
|
||||
<RSTable
|
||||
<TableRSList
|
||||
items={controller.schema?.items}
|
||||
maxHeight={tableHeight}
|
||||
enableSelection={controller.isContentEditable}
|
||||
|
|
|
@ -8,13 +8,13 @@ import { CProps } from '@/components/props';
|
|||
import DataTable, { createColumnHelper, RowSelectionState, VisibilityState } from '@/components/ui/DataTable';
|
||||
import NoData from '@/components/ui/NoData';
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { ConstituentaID, IConstituenta } from '@/models/rsform';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
import { labelCstTypification } from '@/utils/labels';
|
||||
|
||||
interface RSTableProps {
|
||||
interface TableRSListProps {
|
||||
items?: IConstituenta[];
|
||||
enableSelection: boolean;
|
||||
maxHeight?: string;
|
||||
|
@ -32,7 +32,15 @@ const COLUMN_CONVENTION_HIDE_THRESHOLD = 1800;
|
|||
|
||||
const columnHelper = createColumnHelper<IConstituenta>();
|
||||
|
||||
function RSTable({ items, maxHeight, enableSelection, selected, setSelected, onEdit, onCreateNew }: RSTableProps) {
|
||||
function TableRSList({
|
||||
items,
|
||||
maxHeight,
|
||||
enableSelection,
|
||||
selected,
|
||||
setSelected,
|
||||
onEdit,
|
||||
onCreateNew
|
||||
}: TableRSListProps) {
|
||||
const { colors } = useConceptOptions();
|
||||
const windowSize = useWindowSize();
|
||||
|
||||
|
@ -147,4 +155,4 @@ function RSTable({ items, maxHeight, enableSelection, selected, setSelected, onE
|
|||
);
|
||||
}
|
||||
|
||||
export default RSTable;
|
||||
export default TableRSList;
|
|
@ -21,7 +21,7 @@ import { getCstTypeShortcut, labelCstType, prepareTooltip } from '@/utils/labels
|
|||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
function RSListToolbar() {
|
||||
function ToolbarRSList() {
|
||||
const controller = useRSEdit();
|
||||
const insertMenu = useDropdown();
|
||||
|
||||
|
@ -87,4 +87,4 @@ function RSListToolbar() {
|
|||
);
|
||||
}
|
||||
|
||||
export default RSListToolbar;
|
||||
export default ToolbarRSList;
|
|
@ -8,11 +8,11 @@ import { useDebounce } from 'use-debounce';
|
|||
|
||||
import InfoConstituenta from '@/components/info/InfoConstituenta';
|
||||
import SelectedCounter from '@/components/info/SelectedCounter';
|
||||
import GraphSelectionToolbar from '@/components/select/GraphSelectionToolbar';
|
||||
import ToolbarGraphSelection from '@/components/select/ToolbarGraphSelection';
|
||||
import { GraphCanvasRef, GraphEdge, GraphLayout, GraphNode } from '@/components/ui/GraphUI';
|
||||
import Overlay from '@/components/ui/Overlay';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import DlgGraphParams from '@/dialogs/DlgGraphParams';
|
||||
import useLocalStorage from '@/hooks/useLocalStorage';
|
||||
import { GraphColoring, GraphFilterParams, GraphSizing } from '@/models/miscellaneous';
|
||||
|
@ -24,10 +24,10 @@ import { PARAMETER, storage } from '@/utils/constants';
|
|||
import { convertBase64ToBlob } from '@/utils/utils';
|
||||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
import FocusToolbar from './FocusToolbar';
|
||||
import GraphSelectors from './GraphSelectors';
|
||||
import GraphToolbar from './GraphToolbar';
|
||||
import TermGraph from './TermGraph';
|
||||
import ToolbarFocusedCst from './ToolbarFocusedCst';
|
||||
import ToolbarTermGraph from './ToolbarTermGraph';
|
||||
import useGraphFilter from './useGraphFilter';
|
||||
import ViewHidden from './ViewHidden';
|
||||
|
||||
|
@ -303,7 +303,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
|
|||
position='top-0 pt-1 right-1/2 translate-x-1/2'
|
||||
className='flex flex-col items-center rounded-b-2xl cc-blur'
|
||||
>
|
||||
<GraphToolbar
|
||||
<ToolbarTermGraph
|
||||
is3D={is3D}
|
||||
orbit={orbit}
|
||||
noText={filterParams.noText}
|
||||
|
@ -323,7 +323,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
|
|||
}
|
||||
/>
|
||||
{!focusCst ? (
|
||||
<GraphSelectionToolbar
|
||||
<ToolbarGraphSelection
|
||||
graph={controller.schema!.graph}
|
||||
core={controller.schema!.items.filter(cst => isBasicConcept(cst.cst_type)).map(cst => cst.id)}
|
||||
setSelected={controller.setSelected}
|
||||
|
@ -331,7 +331,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
|
|||
/>
|
||||
) : null}
|
||||
{focusCst ? (
|
||||
<FocusToolbar
|
||||
<ToolbarFocusedCst
|
||||
center={focusCst}
|
||||
reset={() => handleSetFocus(undefined)}
|
||||
showInputs={filterParams.focusShowInputs}
|
||||
|
|
|
@ -12,7 +12,7 @@ import GraphUI, {
|
|||
GraphPointerEvent,
|
||||
useSelection
|
||||
} from '@/components/ui/GraphUI';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { ConstituentaID } from '@/models/rsform';
|
||||
import { graphDarkT, graphLightT } from '@/styling/color';
|
||||
import { PARAMETER, resources } from '@/utils/constants';
|
||||
|
|
|
@ -4,12 +4,12 @@ import { useCallback } from 'react';
|
|||
|
||||
import { IconGraphInputs, IconGraphOutputs, IconReset } from '@/components/Icons';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { IConstituenta } from '@/models/rsform';
|
||||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
interface FocusToolbarProps {
|
||||
interface ToolbarFocusedCstProps {
|
||||
center: IConstituenta;
|
||||
showInputs: boolean;
|
||||
showOutputs: boolean;
|
||||
|
@ -19,14 +19,14 @@ interface FocusToolbarProps {
|
|||
toggleShowOutputs: () => void;
|
||||
}
|
||||
|
||||
function FocusToolbar({
|
||||
function ToolbarFocusedCst({
|
||||
center,
|
||||
reset,
|
||||
showInputs,
|
||||
showOutputs,
|
||||
toggleShowInputs,
|
||||
toggleShowOutputs
|
||||
}: FocusToolbarProps) {
|
||||
}: ToolbarFocusedCstProps) {
|
||||
const { colors } = useConceptOptions();
|
||||
const controller = useRSEdit();
|
||||
|
||||
|
@ -60,4 +60,4 @@ function FocusToolbar({
|
|||
);
|
||||
}
|
||||
|
||||
export default FocusToolbar;
|
||||
export default ToolbarFocusedCst;
|
|
@ -19,7 +19,7 @@ import { PARAMETER } from '@/utils/constants';
|
|||
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
interface GraphToolbarProps {
|
||||
interface ToolbarTermGraphProps {
|
||||
is3D: boolean;
|
||||
|
||||
orbit: boolean;
|
||||
|
@ -37,7 +37,7 @@ interface GraphToolbarProps {
|
|||
toggleOrbit: () => void;
|
||||
}
|
||||
|
||||
function GraphToolbar({
|
||||
function ToolbarTermGraph({
|
||||
is3D,
|
||||
noText,
|
||||
foldDerived,
|
||||
|
@ -50,7 +50,7 @@ function GraphToolbar({
|
|||
onDelete,
|
||||
onResetViewpoint,
|
||||
onSaveImage
|
||||
}: GraphToolbarProps) {
|
||||
}: ToolbarTermGraphProps) {
|
||||
const controller = useRSEdit();
|
||||
|
||||
return (
|
||||
|
@ -123,4 +123,4 @@ function GraphToolbar({
|
|||
);
|
||||
}
|
||||
|
||||
export default GraphToolbar;
|
||||
export default ToolbarTermGraph;
|
|
@ -5,11 +5,11 @@ import { motion } from 'framer-motion';
|
|||
import { useCallback, useMemo } from 'react';
|
||||
|
||||
import { IconDropArrow, IconDropArrowUp } from '@/components/Icons';
|
||||
import ConstituentaTooltip from '@/components/info/ConstituentaTooltip';
|
||||
import TooltipConstituenta from '@/components/info/TooltipConstituenta';
|
||||
import { CProps } from '@/components/props';
|
||||
import MiniButton from '@/components/ui/MiniButton';
|
||||
import Overlay from '@/components/ui/Overlay';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useLocalStorage from '@/hooks/useLocalStorage';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { GraphColoring } from '@/models/miscellaneous';
|
||||
|
@ -112,7 +112,7 @@ function ViewHidden({ items, selected, toggleSelection, setFocus, schema, colori
|
|||
>
|
||||
{cst.alias}
|
||||
</button>
|
||||
<ConstituentaTooltip data={cst} anchor={`#${id}`} />
|
||||
<TooltipConstituenta data={cst} anchor={`#${id}`} />
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
|
|
|
@ -38,11 +38,11 @@ import { describeAccessMode, labelAccessMode, tooltips } from '@/utils/labels';
|
|||
|
||||
import { useRSEdit } from './RSEditContext';
|
||||
|
||||
interface RSTabsMenuProps {
|
||||
interface MenuRSTabsProps {
|
||||
onDestroy: () => void;
|
||||
}
|
||||
|
||||
function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
||||
function MenuRSTabs({ onDestroy }: MenuRSTabsProps) {
|
||||
const controller = useRSEdit();
|
||||
const router = useConceptNavigation();
|
||||
const { user } = useAuth();
|
||||
|
@ -334,4 +334,4 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default RSTabsMenu;
|
||||
export default MenuRSTabs;
|
|
@ -9,7 +9,7 @@ import { urls } from '@/app/urls';
|
|||
import { useAccessMode } from '@/context/AccessModeContext';
|
||||
import { useAuth } from '@/context/AuthContext';
|
||||
import { useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useRSForm } from '@/context/RSFormContext';
|
||||
import DlgChangeLocation from '@/dialogs/DlgChangeLocation';
|
||||
import DlgCloneLibraryItem from '@/dialogs/DlgCloneLibraryItem';
|
||||
|
|
|
@ -13,9 +13,9 @@ import Loader from '@/components/ui/Loader';
|
|||
import TabLabel from '@/components/ui/TabLabel';
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import { useLibrary } from '@/context/LibraryContext';
|
||||
import { useBlockNavigation, useConceptNavigation } from '@/context/NavigationContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useRSForm } from '@/context/RSFormContext';
|
||||
import useQueryStrings from '@/hooks/useQueryStrings';
|
||||
import { ConstituentaID, IConstituenta, IConstituentaMeta } from '@/models/rsform';
|
||||
|
@ -26,8 +26,8 @@ import EditorConstituenta from './EditorConstituenta';
|
|||
import EditorRSForm from './EditorRSFormCard';
|
||||
import EditorRSList from './EditorRSList';
|
||||
import EditorTermGraph from './EditorTermGraph';
|
||||
import MenuRSTabs from './MenuRSTabs';
|
||||
import { RSEditState } from './RSEditContext';
|
||||
import RSTabsMenu from './RSTabsMenu';
|
||||
|
||||
export enum RSTabID {
|
||||
CARD = 0,
|
||||
|
@ -249,7 +249,7 @@ function RSTabs() {
|
|||
className='flex flex-col mx-auto min-w-fit'
|
||||
>
|
||||
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
||||
<RSTabsMenu onDestroy={onDestroySchema} />
|
||||
<MenuRSTabs onDestroy={onDestroySchema} />
|
||||
|
||||
<TabLabel
|
||||
label='Карточка'
|
||||
|
|
|
@ -5,14 +5,14 @@ import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
|||
import BadgeConstituenta from '@/components/info/BadgeConstituenta';
|
||||
import DataTable, { createColumnHelper, IConditionalStyle, VisibilityState } from '@/components/ui/DataTable';
|
||||
import NoData from '@/components/ui/NoData';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { ConstituentaID, IConstituenta } from '@/models/rsform';
|
||||
import { isMockCst } from '@/models/rsformAPI';
|
||||
import { PARAMETER, prefixes } from '@/utils/constants';
|
||||
import { describeConstituenta } from '@/utils/labels';
|
||||
|
||||
interface ConstituentsTableProps {
|
||||
interface TableSideConstituentsProps {
|
||||
items: IConstituenta[];
|
||||
activeCst?: IConstituenta;
|
||||
onOpenEdit: (cstID: ConstituentaID) => void;
|
||||
|
@ -22,7 +22,13 @@ interface ConstituentsTableProps {
|
|||
|
||||
const columnHelper = createColumnHelper<IConstituenta>();
|
||||
|
||||
function ConstituentsTable({ items, activeCst, onOpenEdit, maxHeight, denseThreshold = 9999 }: ConstituentsTableProps) {
|
||||
function TableSideConstituents({
|
||||
items,
|
||||
activeCst,
|
||||
onOpenEdit,
|
||||
maxHeight,
|
||||
denseThreshold = 9999
|
||||
}: TableSideConstituentsProps) {
|
||||
const { colors } = useConceptOptions();
|
||||
const windowSize = useWindowSize();
|
||||
|
||||
|
@ -165,4 +171,4 @@ function ConstituentsTable({ items, activeCst, onOpenEdit, maxHeight, denseThres
|
|||
);
|
||||
}
|
||||
|
||||
export default ConstituentsTable;
|
||||
export default TableSideConstituents;
|
|
@ -5,14 +5,14 @@ import { motion } from 'framer-motion';
|
|||
import { useMemo, useState } from 'react';
|
||||
|
||||
import { useAccessMode } from '@/context/AccessModeContext';
|
||||
import { useConceptOptions } from '@/context/OptionsContext';
|
||||
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { ConstituentaID, IConstituenta, IRSForm } from '@/models/rsform';
|
||||
import { UserLevel } from '@/models/user';
|
||||
import { animateSideView } from '@/styling/animations';
|
||||
|
||||
import ConstituentsSearch from './ConstituentsSearch';
|
||||
import ConstituentsTable from './ConstituentsTable';
|
||||
import TableSideConstituents from './TableSideConstituents';
|
||||
|
||||
// Window width cutoff for expression show
|
||||
const COLUMN_EXPRESSION_HIDE_THRESHOLD = 1500;
|
||||
|
@ -37,7 +37,7 @@ function ViewConstituents({ expression, schema, activeCst, isBottom, onOpenEdit
|
|||
|
||||
const table = useMemo(
|
||||
() => (
|
||||
<ConstituentsTable
|
||||
<TableSideConstituents
|
||||
maxHeight={
|
||||
isBottom
|
||||
? calculateHeight(accessLevel !== UserLevel.READER ? '42rem' : '35rem', '10rem')
|
||||
|
|
|
@ -11,13 +11,13 @@ import { useConceptNavigation } from '@/context/NavigationContext';
|
|||
import { ILibraryItem } from '@/models/library';
|
||||
import { animateSideView } from '@/styling/animations';
|
||||
|
||||
interface ViewSubscriptionsProps {
|
||||
interface TableSubscriptionsProps {
|
||||
items: ILibraryItem[];
|
||||
}
|
||||
|
||||
const columnHelper = createColumnHelper<ILibraryItem>();
|
||||
|
||||
function ViewSubscriptions({ items }: ViewSubscriptionsProps) {
|
||||
function TableSubscriptions({ items }: TableSubscriptionsProps) {
|
||||
const router = useConceptNavigation();
|
||||
const intl = useIntl();
|
||||
|
||||
|
@ -82,4 +82,4 @@ function ViewSubscriptions({ items }: ViewSubscriptionsProps) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ViewSubscriptions;
|
||||
export default TableSubscriptions;
|
|
@ -14,9 +14,9 @@ import { useUserProfile } from '@/context/UserProfileContext';
|
|||
|
||||
import EditorPassword from './EditorPassword';
|
||||
import EditorProfile from './EditorProfile';
|
||||
import ViewSubscriptions from './ViewSubscriptions';
|
||||
import TableSubscriptions from './TableSubscriptions';
|
||||
|
||||
function UserTabs() {
|
||||
function UserContents() {
|
||||
const { user, error, loading } = useUserProfile();
|
||||
const { user: auth } = useAuth();
|
||||
const { items } = useLibrary();
|
||||
|
@ -50,11 +50,11 @@ function UserTabs() {
|
|||
</div>
|
||||
</div>
|
||||
<AnimatePresence>
|
||||
{subscriptions.length > 0 && showSubs ? <ViewSubscriptions items={subscriptions} /> : null}
|
||||
{subscriptions.length > 0 && showSubs ? <TableSubscriptions items={subscriptions} /> : null}
|
||||
</AnimatePresence>
|
||||
</AnimateFade>
|
||||
</DataLoader>
|
||||
);
|
||||
}
|
||||
|
||||
export default UserTabs;
|
||||
export default UserContents;
|
|
@ -1,13 +1,13 @@
|
|||
import RequireAuth from '@/components/wrap/RequireAuth';
|
||||
import { UserProfileState } from '@/context/UserProfileContext';
|
||||
|
||||
import UserTabs from './UserTabs';
|
||||
import UserContents from './UserContents';
|
||||
|
||||
function UserProfilePage() {
|
||||
return (
|
||||
<RequireAuth>
|
||||
<UserProfileState>
|
||||
<UserTabs />
|
||||
<UserContents />
|
||||
</UserProfileState>
|
||||
</RequireAuth>
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue
Block a user