);
}
diff --git a/rsconcept/frontend/src/features/oss/pages/oss-page/editor-oss-card/oss-stats.tsx b/rsconcept/frontend/src/features/oss/pages/oss-page/editor-oss-card/oss-stats.tsx
index fb386872..fc726399 100644
--- a/rsconcept/frontend/src/features/oss/pages/oss-page/editor-oss-card/oss-stats.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/oss-page/editor-oss-card/oss-stats.tsx
@@ -13,12 +13,20 @@ import { type IOperationSchemaStats } from '../../../models/oss';
interface OssStatsProps {
className?: string;
+ isMounted: boolean;
stats: IOperationSchemaStats;
}
-export function OssStats({ className, stats }: OssStatsProps) {
+export function OssStats({ className, isMounted, stats }: OssStatsProps) {
return (
-
+
);
}
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/editor-constituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/editor-constituenta.tsx
index 4b7f57f3..0b86ed97 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/editor-constituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/editor-constituenta.tsx
@@ -96,6 +96,7 @@ export function EditorConstituenta() {
onSubmit={initiateSubmit}
onReset={() => setToggleReset(prev => !prev)}
disabled={disabled}
+ isNarrow={isNarrow}
/>
@@ -112,7 +113,7 @@ export function EditorConstituenta() {
) : null}
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/toolbar-constituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/toolbar-constituenta.tsx
index 46490e5d..edaf3af3 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/toolbar-constituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/toolbar-constituenta.tsx
@@ -1,19 +1,16 @@
'use client';
-import clsx from 'clsx';
-
import { urls, useConceptNavigation } from '@/app';
import { HelpTopic } from '@/features/help';
import { BadgeHelp } from '@/features/help/components';
import { MiniSelectorOSS } from '@/features/library/components';
+import { IconShowSidebar } from '@/features/library/components/icon-show-sidebar';
import { useFindPredecessor } from '@/features/oss/backend/use-find-predecessor';
import { MiniButton } from '@/components/control';
import {
IconClone,
IconDestroy,
- IconList,
- IconListOff,
IconMoveDown,
IconMoveUp,
IconNewItem,
@@ -21,6 +18,7 @@ import {
IconReset,
IconSave
} from '@/components/icons';
+import { cn } from '@/components/utils';
import { useModificationStore } from '@/stores/modification';
import { usePreferencesStore } from '@/stores/preferences';
import { tooltipText } from '@/utils/labels';
@@ -34,6 +32,7 @@ interface ToolbarConstituentaProps {
className?: string;
activeCst: IConstituenta | null;
disabled: boolean;
+ isNarrow: boolean;
onSubmit: () => void;
onReset: () => void;
@@ -43,6 +42,7 @@ export function ToolbarConstituenta({
className,
activeCst,
disabled,
+ isNarrow,
onSubmit,
onReset
@@ -80,7 +80,7 @@ export function ToolbarConstituenta({
}
return (
-
+
{schema.oss.length > 0 ? (
- ) : (
-
- )
- }
+ icon={
}
onClick={toggleList}
/>
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/editor-rsform-card.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/editor-rsform-card.tsx
index fa051222..4775223d 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/editor-rsform-card.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/editor-rsform-card.tsx
@@ -1,8 +1,12 @@
'use client';
+import clsx from 'clsx';
+
import { EditorLibraryItem, ToolbarItemCard } from '@/features/library/components';
+import { useWindowSize } from '@/hooks/use-window-size';
import { useModificationStore } from '@/stores/modification';
+import { usePreferencesStore } from '@/stores/preferences';
import { globalIDs } from '@/utils/constants';
import { useRSEdit } from '../rsedit-context';
@@ -10,9 +14,14 @@ import { useRSEdit } from '../rsedit-context';
import { FormRSForm } from './form-rsform';
import { RSFormStats } from './rsform-stats';
+const SIDELIST_LAYOUT_THRESHOLD = 768; // px
+
export function EditorRSFormCard() {
const { schema, isArchive, isMutable, deleteSchema, isAttachedToOSS } = useRSEdit();
const { isModified } = useModificationStore();
+ const showRSFormStats = usePreferencesStore(state => state.showRSFormStats);
+ const windowSize = useWindowSize();
+ const isNarrow = !!windowSize.width && windowSize.width <= SIDELIST_LAYOUT_THRESHOLD;
function initiateSubmit() {
const element = document.getElementById(globalIDs.library_item_editor) as HTMLFormElement;
@@ -31,24 +40,33 @@ export function EditorRSFormCard() {
}
return (
-
+
-
);
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
index 97e8cacc..fe7dffa1 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
@@ -1,5 +1,3 @@
-import clsx from 'clsx';
-
import {
IconChild,
IconConvention,
@@ -19,6 +17,7 @@ import {
IconStatusProperty,
IconTerminology
} from '@/components/icons';
+import { cn } from '@/components/utils';
import { ValueStats } from '@/components/view';
import { type IRSFormStats } from '../../../models/rsform';
@@ -26,13 +25,22 @@ import { type IRSFormStats } from '../../../models/rsform';
interface RSFormStatsProps {
className?: string;
isArchive: boolean;
+ isMounted: boolean;
stats: IRSFormStats;
}
-export function RSFormStats({ className, stats, isArchive }: RSFormStatsProps) {
+export function RSFormStats({ className, stats, isArchive, isMounted }: RSFormStatsProps) {
return (
-
-
+
+
);
}
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/toolbar-rslist.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/toolbar-rslist.tsx
index a42571cb..35dc5fe2 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/toolbar-rslist.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/toolbar-rslist.tsx
@@ -1,4 +1,4 @@
-import clsx from 'clsx';
+'use client';
import { HelpTopic } from '@/features/help';
import { BadgeHelp } from '@/features/help/components';
@@ -15,6 +15,7 @@ import {
IconOpenList,
IconReset
} from '@/components/icons';
+import { cn } from '@/components/utils';
import { prefixes } from '@/utils/constants';
import { prepareTooltip } from '@/utils/utils';
@@ -46,7 +47,7 @@ export function ToolbarRSList({ className }: ToolbarRSListProps) {
} = useRSEdit();
return (
-
+
{schema.oss.length > 0 ? (
diff --git a/rsconcept/frontend/src/index.css b/rsconcept/frontend/src/index.css
index 3634211e..0b0487c2 100644
--- a/rsconcept/frontend/src/index.css
+++ b/rsconcept/frontend/src/index.css
@@ -91,6 +91,7 @@
--duration-modal: 300ms;
--duration-fade: 300ms;
--duration-move: 500ms;
+ --duration-transform: 1000ms;
--duration-cycle: 1000ms;
/* Custom animations */
diff --git a/rsconcept/frontend/src/stores/preferences.ts b/rsconcept/frontend/src/stores/preferences.ts
index 3d2899f1..37e84053 100644
--- a/rsconcept/frontend/src/stores/preferences.ts
+++ b/rsconcept/frontend/src/stores/preferences.ts
@@ -20,6 +20,12 @@ interface PreferencesStore {
showCstSideList: boolean;
toggleShowCstSideList: () => void;
+ showRSFormStats: boolean;
+ toggleShowRSFormStats: () => void;
+
+ showOSSStats: boolean;
+ toggleShowOSSStats: () => void;
+
showExpressionControls: boolean;
toggleShowExpressionControls: () => void;
}
@@ -63,6 +69,12 @@ export const usePreferencesStore = create()(
showCstSideList: true,
toggleShowCstSideList: () => set(state => ({ showCstSideList: !state.showCstSideList })),
+ showRSFormStats: true,
+ toggleShowRSFormStats: () => set(state => ({ showRSFormStats: !state.showRSFormStats })),
+
+ showOSSStats: true,
+ toggleShowOSSStats: () => set(state => ({ showOSSStats: !state.showOSSStats })),
+
showExpressionControls: true,
toggleShowExpressionControls: () => set(state => ({ showExpressionControls: !state.showExpressionControls }))
}),
diff --git a/rsconcept/frontend/src/styling/utilities.css b/rsconcept/frontend/src/styling/utilities.css
index a3302f6d..6abc7941 100644
--- a/rsconcept/frontend/src/styling/utilities.css
+++ b/rsconcept/frontend/src/styling/utilities.css
@@ -142,6 +142,12 @@
}
}
+@utility cc-animate-sidebar {
+ transition-property: max-width, opacity;
+ transition-timing-function: var(--ease-in-out);
+ transition-duration: var(--duration-transform);
+}
+
@utility cc-animate-position {
transition-property: transform top left bottom right margin padding;
transition-timing-function: var(--ease-bezier);